개인 프로젝트, 팀 프로젝트에 이어 사내 프로젝트까지 스프링 시큐리티를 담당하며 시큐리티에 대한 이해도가 많이 필요하게 되었다. 특히 시큐리티는 필터 체인을 통해 여러 가지 인증/인가와 관련된 필터를 타게 되는데 해당 필터들의 대한 이해가 동반되지 않으면 스프링 시큐리티를 사용하는 데 있어 많은 어려움을 겪게 된다. 우선 스프링 시큐리티를 활성화하게 되면 아래와 같은 기본적으로 정의된 필터를 타면서 인증/인가 절차를 진행하게 된다. 그 중에 UsernamePasswordAuthenticationFilter라는 것이 6번째 필터로 존재하게 되는데 해당 필터의 존재의 의미와 역할에 대해 알아보려고 한다. 왜 이렇게 익숙한 이름이지? 처음에 UsernamePasswordAuthenticationFil..
JPA를 사용하고 나서 @Builder를 쓰기 시작했는데 자세히 이게 무슨 역할을 하는지 몰랐었다. 그래서 오늘 간단하게 @Builder 어노테이션에 대해 정리를 해보려고 한다. 우선 JPA를 사용하고나서부터 패키지의 구조가 많이 변경됐다. Entity - DB 테이블과 1:1 매칭하는 클래스Repository - 해당 Entity에 대한 CRUD를 제공한다.Service - 기존에는 Service 인터페이스와 그걸 구현한 ServiceImpl 클래스를 만들었는데, JPA로 바꾸고 나서는 해당 Entity에 대한 클래스만 생성한다. Entity에 대한 비즈니스 로직을 수행한다.DTO - 클라이언트와 서버 간에 정보를 전송하기 위한 클래스다. Entity를 받아서 전송해도 되지만 문제점이 있다!1. 클라이..