스프링 세큐리티 예제
- JDK 17
- 인텔리 J 커뮤니티
- YML
기본적으로 다음과 같은 상속 구조를 가진다
- 공통 (Base)
- 공통 > 공통 요청, 공통 > 공통 응답
- 공통 요청 > 각 요청, 공통 응답 > 각 응답
기본적으로 스프링 레스트 컨트롤러는 롬복의 수퍼빌더와 호환이 되지않는다. 수퍼빌더를 쓸 줄 몰라서 수퍼빌더로 된 파라미터 객체를 쓰지 못한다. 수퍼빌더를 쓰려면 상속관계의 모든 부모와 자식이 똑같이 수퍼빌더를 맞춰야 하므로 DTO 에는 쓰지 못한다
그래서 각 요청, 응답에만 빌더를 쓰고 공통 필드에 대해서는 세터를 쓰기로 했다
레스트 컨트롤러 어드바이스를 사용하는데, 모든 사용자 정의 예외는 하나의 예외 객체로 퉁칠것이다
BaseException
원래는 다양한 예외를 정의하고 예외별로 핸들 함수를 정의해서 사용하는 것이 국룰이나,
SI를 하다보면 정적 검사 툴로 포티파이를 많이 사용하게 되는데, 포티파이의 사내 룰이 대부분 AOP 와 호환이 되지 않더라.
그렇다고 AOP 를 안쓸 수도 없고 하다 보니 AOP 에서 모든 Throwable 을 사용자 정의로 감싸기 위해
이와 같은 구조를 고안했다