300x250
✍️ 악취 : 이해하기 힘든 이름 깔끔한 코드에서 가장 중요한 것은 좋은 이름이다. 좋은 이름을 위해 크게 세 가지 리팩토링을 활용할 수 있다. 1. 함수 선언 변경 2. 변수 이름 변경 3. 필드 이름 변경 악취 가득한 코드 @AllArgsConstructor @Getter public class Person { private String name; private int age; } @Getter public class CustomerRepository { private static int sequenceId = 1; private List names = new ArrayList(); private List ages = new ArrayList(); private List ids = new ArrayL..
✍️ Argument Resolver, 아규먼트 리졸버 개념 Argument Resolver란, Client가 요청한 Request로부터 값을 참조하거나 객체를 생성해서 Handler(Controller)의 파라미터에 바인딩 할 때 사용하는 객체이다. 가령, 로그인 인증을 마친 Client가 Server로부터 자신의 UserId가 기입된 인증용 Token을 발급받았다고 가정해 보자. Client는 Request를 보낼 때마다 인증의 일환으로 Token을 보낼 것이고, Server는 유효한 토큰인지 검증을 거친 후 (필요에 따라) 토큰에 저장된 UserId를 꺼내서 Client의 요청을 처리할 것이다. Argument Resolver 없이 단순 User 조회 Controller는 다음과 같이 세 단계에 걸..
✍️ JWT (JSON Web Token) 개념 JWT(JSON Web Token)란 선택적 서명 혹은 선택적 암호화를 사용해 데이터를 만드는 인터넷 표준으로, 헤더, 페이로드, 서명으로 구성된다. 페이로드는 클레임(claim)을 담은 JSON 형태이며 서명은 무결성과 인증을 위해 사용된다. 쉽게 말하면 JSON 포맷을 이용해서 사용자 정보를 저장하는 Web Token으로, 클라이언트 서버 구조에서 주로 인증과 데이터 전달에 사용된다. 여기서 선택적 서명과 선택적 암호화라는 말이 나오는데 JWT에 서명을 추가하면 무결성이 보장되는 JWS가 되고, 암호화를 추가하면 무결성과 기밀성이 보장되는 JWE가 된다. 비유하자면 JWT를 확장한 클래스가 JWS 혹은 JWE라고 할 수 있다. 하지만 JWT를 이야기할 ..
✍️ Interceptor, 인터셉터 개념 사전적인 의미로 Intercept란 가로막다, 가로채다라는 의미를 가지고 있다. 이와 유사하게 Spring에서 제공하는 Interceptor도 Cilent의 Request와 Server의 Response를 가로채는 역할을 한다. 일반적으로 Login 검증, Token 검증에 Interceptor가 사용된다. Spring이 Request를 처리하는 흐름에서 인터셉터를 살펴보면 1. Client로부터 Request가 들어오면 프론트 컨트롤러인 DispatcherServlet이 이를 가장 먼저 받는다. 2. DispatcherServlet은 HandlerMapping을 거쳐 Request를 처리할 Controller를 찾는다 3. Controller를 찾고 나서, H..
2022.08.13 토요일 롤보다 메이플이 더 재밌는 요즘 주보 도는 게 인생의 낙이 되어버렸다;; 여느 때와 같이 열심히 주보 돌았는데 카파풀 잡고 파풀마 먹음 시부랭 ㄷㄷ; 한 7억 하려나? 아니면 10억? 행복 회로 풀 가동했는데 2억ㅋㅋ 진짜 게임 망한 듯 대충 2억 2천에 올리고 잘 팔았다는 마무리