Technical Story: Github Issue #1
프로젝트 생성에 앞서 스프링 부트 버전 선택이 필요하다.
스프링 부트의 지원은 2년이기 때문에 최신 버전을 고려하고 있다.
이전 회사에서는 2.7을 사용했기 때문에 3의 주요 변화를 파악하고 결정할 필요가 있다.
ConnectionDetails
으로 외부 서비스 커넥션 정보 추상화 장점 기대JDK 17 기본, JDK 19도 가능하다.
Spring Framework 6.0 and Jakarta EE 9 을 기반으로 한다.
javax.*
패키지명이 jakarta.*
로 변경된다.
GraalVM Native Image 지원
Log4j2 강화
Observability
@ConstructorBinding
Prometheus Support
More Flexible Auto-configuration for Spring Data JDBC
Enabling Async Acks with Apache Kafka
Elasticsearch Java Client
Auto-configuration of JdkClientHttpConnector
@SpringBootTest with Main Methods
Spring Boot 3.1
Apache HttpClient 4 의존성 관리
RestTemplate
지원이 제거되었다. Servlet and Filter Registrations
ServletRegistrationBean
, FilterRegistrationBean
등록에 실패하면 warning 경고 대신 IllegalStateException
예외를 발생시킨다.
기존 동작을 유지하려면 setIgnoreRegistrationFailure(true)
메서드를 사용하면 된다.
Testcontainers 의존성 관리
Hibernate 6.2 버전으로 업그레이드
Hibernate 6.2 migration guide 읽고 어플리케이션에 미치는 영향을 파악할 것
Jackson 2.15
Mockito 5
주요 의존성 버전 업그레이드
새로운 service connection 개념이 도입됨. ConnectionDetails이라는 새로운 인터페이스가 생성되었다.
원격 서비스와 커넥션에 필요한 정보를 제공하는 Beans 이다. auto-configuration 도 ConnectionDetails
빈을 사용하도록 변경중이다.
장점은 환경 설정 파일과 어플리케이션 결합을 낮추는 효과가 있으며,
connection 관련된 정보를 캡슐화할 수 있다.
Testcontainers
기존에는 테스트 환경에서만 일회용 테스트 컨테이너를 사용했으나, 개발 모드에서도 사용이 가능해졌다.
Testcontainer lifecycle 관리가 개선되어 container가 먼저 초기화되고 마지막으로 파기되도록 한다.
Docke Compose 지원
Maximum HTTP Response Header Size
HTTP 통신시 tomcat, jetty 사용할 경우 Response 헤더 사이즈 설정 가능하다.
기본은 8kb 다.
https://spring.io/projects/spring-boot#overview
https://docs.spring.io/spring-boot/docs/current/reference/html/
https://blog.stkcorp.co.kr/splunk/observability-vs-monitoring-차이점은-무엇일까요
https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0-Release-Notes