
1. AttributeConverter registered multiple times 에러(JPA, Hibernate)[ 문제 상황 공유 ]문제가 발생했던 환경은 다음과 같다.Spring Boot 2.7Hibernate: 5.6.16.Final통합테스트에서만 발생 그리고 문제가 생겼던 코드는 다음의 부분이였다. YearMonth 타입의 필드를 데이터베이스에 저장하기 위해 String 타입으로 변환하도록 컨버터를 사용하는 부분이다.@Converterclass YearMonthConverter : AttributeConverter { override fun convertToDatabaseColumn(attribute: YearMonth?): String? { return attribute..
1. @Transactional에서 첫 쿼리 실행까지(실제 Connection이 필요할 때까지)커넥션 점유를 늦추는 LazyConnectionDataSourceProxy[ @Transactional의 동작 방식 ]스프링에서 개발을 하다 보면 @Transactional 애노테이션을 활용하게 된다. @Transactional은 AOP(Aspect-Oriented Programming) 기반으로 데이터베이스 커넥션으로부터 트랜잭션 관련 기능을 지원하도록 도와준다. 스프링의 트랜잭션에 대한 자세한 내용은 여기 링크를 참고하도록 하자.@Transactional 애노테이션을 선언하면, Transaction 처리를 위한 부가 기능(Advice) 클래스인 TransactionInterceptor 클래스에서 요청을 가로..

1. @PostConstruct 내부에서 @Bean 메서드 호출로 인해 발생하는 circular dependencies 문제 해결하기[ 문제 상황 공유 ]예를 들어 다음과 같은 코드가 있다고 하자.@Configuration@Slf4jpublic class ProfileConfiguration { @Value("spring.profiles.active") private String profile; @PostConstruct void init() { ServerProfile serverProfile = serverProfile(); if (serverProfile != null) { log.info("Using server profile: {..

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..