0. 사전 준비 사항[ SpringBoot 3.X 마이그레이션 사전 준비 사항 ]2.7.x 최신 버전으로 사전 업데이트하기버전업에 따른 의존성 변경 검토하기2.7 버전의 의존성3.x 버전의 의존성Spring Security 준비하기스프링 부트 3에서는 스프링 시큐리티 6을 사용함스프링 시큐리티는 6으로의 안전한 전환을 위해 5.8 버전을 제공하므로, 먼저 5.8로 버전업 필요스프링 시큐리티 6은 모든 dispatch type에 대해 authorization을 적용하는데, 해당 타입을 지정하려면 spring.security.filter.dispatcher-types 프로퍼티를 사용하면 됨시스팀 요구사항자바 17 (자바 8은 더 이상 지원하지 않음)스프링 프레임워크 6 [ IntelliJ 업데이트 ]스프링..
회사에서 관리중인 프로젝트가 크게 2가지가 있다. 하나는 스프링 부트 3.2까지 올려두었는데, 다른 프로젝트도 맞춰서 3.2까지 올려주려고 한다. 확인해보니 다른 스프링 부트 2.5.14 버전에 머물러 있어서, 3.2까지 올리기 위해 먼저 스프링 부트 2.7.18 및 자바 17로 버전업 하였다. 그 과정에서 해결했던 내용들을 정리하였다. 1. Java 17 & SpringBoot 2.7 버전업(자바 17 & 스프링부트 2.7 버전업)[ Java 17 & SpringBoot 2.7 버전업 ]LomboK 1.18.22 버전업자바 버전을 1.8에서 17으로 올림에 따라 자바 컴파일 시에 롬복에서 다음과 같은 문제가 발생하였다.자바 17과 호환되도록 롬복 버전을 1.18.22로 맞춰 올려주도록 하자.> ja..
1. 스프링 부트3.2에 추가된 유효성 검사 기능(MethodValidator) 파헤치기[ 스프링 부트3.2에 추가된 유효성 검사 기능 파헤치기 ]스프링 부트 2를 기준으로, 사용 가능한 유효성 검사 방법이 크게 2가지 종류가 있었다.컨트롤러에서 @Valid를 활용하기컨트롤러가 아닌 곳에서 @Validated + @Valid 활용하기 앞선 포스팅에서 자세히 살펴볼 수 있듯이, 컨트롤러에서 @Valid를 활용하면 ArgumentResolver를 활용하여 컨트롤러 객체로 넘겨줄 파라미터를 생성할 때 유효성 검사가 진행된다. 따라서 컨트롤러가 아닌 다른 계층에서는 추가적으로 클래스 선언에 @Validated를 추가해주어야 한다. 그러면 AOP가 적용되어 유효성 검사를 진행하게 된다.컨트롤러에서 @Valid를 ..
1. 스프링부트3 Name for argument of type not specified 에러(Parameter Name Retention)[ SpringBoot3 Parameter Name Retention ]스프링부트3로 버전이 올라가면서 정말 많은 변경사항이 생겼는데, 그 중 하나가 Parameter Name Retention 관련된 부분이다. 해당 내용은 LocalVariableTableParameterNameDiscoverer 클래스가 스프링 프레임워크 6.0에서 deprecated되고, 스프링 프레임워크 6.1에서 삭제되었다는 것이다. 해당 클래스는 어떠한 역할을 하고 있으며, 어떠한 영향을 미치는지 살펴보도록 하자. LocalVariableTableParameterNameDiscoverer..
1. 로컬 캐시와 레디스를 함께 사용하는 2-Level Cache(2계층 캐시) 구현하기아래의 내용을 제대로 이해하기 위해서는 스프링이 제공하는 Cache와 CacheManager에 대한 이해가 필요하다. 따라서 이전 포스팅을 먼저 참고하도록 하자. [ 요구사항 정리 ]이번에 구현하고자 하는 기능은 스프링의 @Cacheble을 활용하여 로컬 캐시와 분산 캐시를 함께 사용하는 2-Level Cache(2계층 캐시)를 구현하는 것이다. 2계층 캐시란 동일한 캐시 요청(EmailToNameCache)에 대해 먼저 로컬 캐시(LocalCacheManager)를 조회하여 있으면 반환하고, 없으면 분산 캐시(RedisCacheManager)를 조회하여 그 결과를 반환하는 것이다. 이를 통해 분산 캐시에 대한 트..