JWT (JSON Web Token)
·
카테고리 없음
내용 및 이미지 출처 [인증] 세션/쿠키 방식, JWT 방식 [인증] Access Token, Refresh Token JWT의 개념의 개념부터 구현까지 알아보기 [WEB] 📚 JWTjson web token란 💯정리 [WEB] 📚 Access Token & Refresh Token 원리 (feat. JWT) ❓ Token 인증이란 토큰 기반 인증 시스템은 클라이언트가 서버에 접속을 하면 서버에서 해당 클라이언트에게 인증이 되었다는 의미로 '토큰'을 부여한다. 이 토큰은 유일하다. 토큰을 발급받은 클라이언트는 또 다시 서버에 요청을 보낼 때 요청 헤더에 토큰을 심어 보낸다. 서버에서는 클라이언트로부터 받은 토큰을 서버에서 제공한 토큰과의 일치 여부를 체크하여 인증 과정을 처리하게 된다. 토큰은 서버가 아..
인터페이스와 다형성
·
카테고리 없음
인터페이스 자바에서 인터페이스(Interface)는 객체의 사용방법을 정의한 타입이다. 인터페이스를 통해 다양한 객체를 동일한 사용 방법으로 이용할 수 있다. 인터페이스는 개발 코드와 객체가 서로 통신하는 접점 역할을 한다. 개발 코드가 인터페이스의 메소드를 호출하면 인터페이스는 객체의 메소드를 호출시킨다. 왜 중간에 인터페이스를 두는걸까? 그 이유는 개발 코드를 수정하지 않고 사용하는 객체를 변경할 수 있도록 하기 위해서이다. 인터페이스는 하나의 객체가 아니라 여러 객체들과 사용이 가능하므로 어떤 객체를 사용하느냐에 따라서 실행 내용과 리턴값이 다를 수 있다. 따라서 개발 코드 측면에서는 코드 변경 없이 실행 내용과 리턴값을 다양화할 수 있다는 장점을 가지게 된다. 인터페이스 선언 인터페이스 선언은 c..
3주차 - 스프링 입문 주차
·
카테고리 없음
3주차 마무리. 언제나 처럼 나의 부족함을 절실하게 느꼈다. 다만, 내가 어떤 방향성을 가지고 가야할지에 대해 어느정도 정리가 되었다. 공부의 방법을 "이렇게 하자!!!"라는 정리가 아니다. 주어진 시간을 어떻게 활용할지에 대하여 어느정도 틀을 잡게 되었다. 나만의 시스템을 확립해 나가자. 그리고 그 시스템 안에서 움직이는 순간만큼은 시스템에 온전히 내 몸을 맡기자. (의심하며 멈추는 등 아까운 시간을 허비하지 말자.) DI (Dependency Injection) DI = 의존성 주입 객체간 의존성을 개발자가 객체 내부에서 직접 호출(new 연사자) 하는 대신, 외부(스프링 컨테이너)에서 객체를 생성해서 넣어주는 방식이다. 외부에서 두 객체 간의 관계를 설정해주는 디자인 패턴으로, 인터페이스를 사이에 ..
목표와 시스템
·
카테고리 없음
항해에서 기술 매니저님에게 영상을 추천받아 보게 되었다. 좋은 영상을 추천해주셔서 감사합니다. 인프콘 어느 날 고민 많은 주니어 개발자가 찾아왔다. - 성장과 취업, 이직 이야기 김영한 바로 2022년 인프런에서 주최한 인프콘 영상이었다. 그중에서, 김영한님이 진행해주신 섹션을 선택해서 보았는데 섹션이 진행되는 내내 뭔가가 정리되어가는 느낌이 들었다. 특히 "목표와 시스템" 이라는 주제로 진행되는 이야기가 가장 인상 깊었다. 목표는 달성하면 성공, 아니면 실패 라고 말씀하시며, 목표의 동기는 열정이라고 말씀하셨다. 음... 열정을 앞세워 세우는 계획이 목표라고 말씀해주시는 거라고 느꼈다. 맞지않은가? 적어도 나에게 있어서는 맞는 소리인것 같다. 나는 때때로 무엇인가를 이뤄보겠다고는 의지와 열정에 불타고,..
Spring Framework 의 특정과 장점
·
카테고리 없음
특징 경량 컨테이너로서 자바 객체를 직접 관리한다. 각각의 객체 생성, 소멸과 같은 라이프 사이클을 관리하며 스프링으로부터 필요한 객체를 얻어올 수 있다. 스프링은 Plain Old Java Object 방식의 프레임워크이다. 구현을 위해 특정한 인터페이스를 구현하거나 상속받을 필요가 없어 기존에 존재하는 라이브러리 등을 지원하기에 용이하고, 객체가 가볍다. 스프링은 제어 반전(IoC : Inversion of Control)을 지원한다. 컨트롤의 제어권이 사용자가 아니라 프레임워크에 있어서 필요에 따라 스프링에서 사용자의 코드를 호출한다. 스프링은 의존성 주입(DI : Dependency Injection)을 지원한다. 각각의 계층이나 서비스들 간에 의존성이 존재할 경우 프레임워크가 서로 연결시켜준다...
[항해 26일 차] 추상 클래스
·
카테고리 없음
추상 클래스(abstract class) 미완성 설계도, 미완성 메소드를 가지고 있는 클래스 객체를 직접 생성할 수 있는 클래스를 실체 클래스라고 한다면, 이 클래스들의 공통적인 특성을 추출해서 선언한 클래스를 추상 클래스라고 한다. 추상 클래스는 추상 메서드를 가질수 있다. (추상 메서드만 X) ❓ 추상 클래스는 추상 메소드를 최소한 하나라도 가져야 할까? NOPE. 추상 클래스는 추상 메소드를 가지지 않아도 상관없다. 단, 추상 메소드를 하나라도 가지는 클래스는 추상 클래스가 되어야 한다. 추상 클래스와 실체 클래스는 상속의 관계를 가지고 있다. 추상 클래스가 부모, 실체 클래스가 자식으로 구현되어 실체 클래스는 추상 클래스의 모든 특성을 물려받고, 추가적인 특성(필드, 메소드)을 가질 수 있다. a..
[항해 25일 차] 레이어드 아키텍처_Layered Architecture
·
카테고리 없음
코드 아키텍처를 구상할 때는 확장성(extensibility), 재사용성(reusability), 유지 보수 가능성(maintainability), 가동성(readability) 와 같은 요소들을 염두해야 한다. 코드의 구조를 구성하고 관리하는 틀로써 만들어진 많은 패턴이 존재한다. 그 중, 백엔드 API 코드에 가장 널리 적용되는 패턴 중 하나인 레이어드 아키텍처 패턴에 대해서 알아보고자 한다. Layered Architecture Multi-tier 아키텍처 패턴이라고도 불리는 레어이드 아키텍처 코드는 논리적인 부분 혹은 역할에 따라 독립된 모듈로 나누어서 구성하는 패턴이다. 그리고 각 모듈이 서로의 의존도에 따라 층층히 쌓듯이 연결되어 전체의 시스템을 구현하는 구조이다. 각 시스템 마다 경우가 다를..
[항해 25일 차] 트랜잭션_Transaction
·
카테고리 없음
트랜잭션이 뭐야? 만약 데이터베이스의 데이터를 수정하는 도중에 예외가 발생한다면 어떻게 해야할까? 데이터베이스의 데이터들은 수정이 되기 전의 상태로 다시 되돌아가야 하고, 다시 수정 작업이 진행되어야 할 것이다. 이처럼 여러 작업을 진행하다가 문제가 생겼을 경우 이전 상태로 롤백하기 위해 사용되는 것이 Transaction(트랜잭션)이다. Transaction -> 더 이상 쪼갤 수 없는 최소 작업 단위 트랜잭션은 commit 으로 성공하거나 rollback 으로 실패 이후 취소되어야 한다. (YES or NO) 데이터베이스의 상태를 변경하는 작업 또는 한번에 수행되어야 하는 연산들을 의미한다. begin, commit 을 자동으로 수행해준다. 예외 발생 시 rollback 처리를 자동으로 해준다. 트랜..
[항해 24일 차] 상속과 다형성
·
카테고리 없음
상속 상속은 이미 잘 개발된 클래스를 재사용해서 새로운 클래스를 만들기 때문에 중복되는 코드를 줄여 준다. 상속을 이용하면 부모 클래스의 수정으로 모든 자식 클래스들도 수정되는 효과를 가져오기 때문에 유지 보수 시간을 최소화 할 수 도 있다. ✏️ 클래스 상속 class 자식 클래스 extends 부모 클래스 { } 자바에서 상속으 다음과 같은 특징을 가지고 있다. 여러 개의 부모 클래스를 상속할 수 없다.(다중 상속 X) 부모 클래스에서 private 접근 제한을 갖는 필드와 메소드는 상속 대상에서 제외된다. ✏️ 부모 생성자 호출 자식 객체를 생성하면, 부모 생성자가 먼저 생성되고 그다음에 자식 객체가 생성된다. 부모 생성자는 자식 생성자의 맨 첫 줄에서 호출된다. 예를 들어, Car의 생성자가 명시..
[항해 23일 차] RESTful API, PUT 과 PATCH 의 차이
·
카테고리 없음
HTTP Method 중에 PUT 과 PATCH 는 리소스의 업데이트를 담당한다. 리소스를 업데이트 한다는 점에서는 같은 역할을 하는 메소드처럼 보이지만 두개의 요청에는 약간의 차이가 있다. PUT : 리소스의 모든 것을 업데이트 한다. PATCH : 리소스의 일부를 업데이트 한다. 회원(member) : 1 이름(name) : 홍길동 나이(age) : 25 성별(gender) : M 이라는 데이터가 존재한다고 생각해보자. PUT 을 통해 아래와 같은 요청을 보내면, { name : "김형준" } ↓ 회원(member) : 1 이름(name) : 김형준 나이(age) : 성별(gender) : 보내지지 않은 값에 대해서는 null 값으로 변하는 것이다. PATCH 를 통해 아래와 같은 요청을 보내면, {..
[항해 23일 차] 객체지향 3요소
·
카테고리 없음
객체 지향 객체 지향 모델링은 기능이 아닌 객체가 중심이 되며 "누가 어떤 일을 할 것인가?"가 핵심이 된다. 즉, 객체를 도출하고 각각의 역할을 정의해 나가는 것에 초점을 맞춘다. 객체 지향 프로그래밍의 특징 추상화(abstraction) 객체들의 공통적인 특징(기능, 속성)을 도출하는 것 객체지향적 관점에서는 클래스를 정의 하는 것을 추상화라고 할 수 있다. 캡슐화(encapsulation) 실제로 구현되는 부분을 외부에 드러나지 않도록 하여 정보를 은닉할 수 있다. 객체가 독립적으로 역할을 할 수 있도록 데이터와 기능을 하나로 묶어 관리하는 것 데이터를 보이지 않고 외부와 상호작용을 할 때는 메소드를 이용하여 통신을 한다. 보통 라이브러리로 만들어서 업그레이드해 사용할 수 있다. 상속성(inheri..
[항해 23일 차] Controller, Service, Repository
·
카테고리 없음
MVC 패턴이란? MVC 패턴은 Model-View-Controller의 약자로서 개발을 할 때 3가지 형태로 역할을 나누어 개발하는 방법론을 의미한다. Model : 애플리케이션이 무엇을 할 것인지를 정의하는 부분이다. View : 사용자에게 시각적으로 보여주는 부분이다.(UI) Controller : Model이 데이터를 어떻게 처리할지 알려주는 역할을 한다. MVC 패턴을 사용하는 이유는 하나의 애플리케이션이 서로 분리되어 각자의 역할에만 집중할 수 있게끔하여 유지보수, 애플리케이션의 확장성, 유연성, 중복 코딩 문제점 해결이라는 효과를 가질 수 있기 때문이다. 위 사진은 웹서버가 클라이언트와 소통할 때 어떤 로직을 거쳐서 정보가 전달되는지에 대한 그림이다. 가장 위인 front-end에서 들어오는..