—
Upgrading from Spring Boot 2.6
—
@SpringBootTest Property Source 우선 순위
@TestPropertySource
어노테이션으로 명시 한 테스트 속성은args
로 받은 명령 속성보다 더 우선순위가 높@TestPropertySource
와 실행 인자를 동시에 받아 실행하는 경우 우선순위를 고려할 것
—
신규 Flyway 모듈
- Flyway Version을 8.0 → 8.5 로 지원한다
- 여러 DB에 대한 Flyway의 지원이 모듈로 추출되었다 - 아래 명시 된 DB를 사용하고자 한다면 의존성을 추가하여 사용해야 한다
flyway-firebird
: Firebirdflyway-mysql
: MariaDB & MySQLflyway-sqlserver
: SQL Server
—
H2 2.1
- 지원하는 H2 Version이 2.1.120 로 업그레이드 되었다
- 위 버전은 이전 버전과 호환되지 않으며, 여러 보안 취약점을 개선하였다
—
jOOQ
- JOOQ 오픈 소스 버전은 Java 8과 H2 2.x 버전을 지원하지 않는다
- 따라서 Java 11 버전을 사용한다면
jooq.version
프로퍼티를 3.16 버전 이상으로 업그레이드 해야 한다 - Java 8 버전을 사용하고 싶다면 JOOQ Professional Edition을 사용해야 한다
—
Microsoft SQL Server JDBC Drive 10
- MSSQL driver 버전이 v9 → v10 으로 업그레이드 된다
- v10 버전은 암호화를 기본으로 제공한다
- 서버에 신뢰할 수 있는 인증서를 설치하거나, JDBC 연결 URL에
encrypt=false
를 포함하도록 업데이트 하는 것을 권장한다
—
OkHttp 4
- OkHTTP 3 → OkHTTP 4 로 업그레이드 된다
- 속성 또한
okhttp3.version
→okhttp.version
으로 변경 된다 - OkHTTP 4 는 OkHTTP 3 과 역 호환이 가능하다. 따라서 OkHTTP 3 을 계속 사용하고 싶다면
okhttp.version
속성을 구성해서 사용해야한다
—
netty-tcnative 에 대한 별도 종속성 관리 제거
netty-tcnative
에 대한 별도 종속성 관리가 제거 되어, Netty의 bom에서 제공하는 종속성 관리가 제공 된다- 이는
netty-tcnative
버전이 Netty 버전과 일치하도록 하기 위함이다 - 더이상
netty-tcnative.version
속성으로netty-tcnative
버전을 재정의 할 수 있다 - 여전히 자체 종속성 관리를 제공하긴 하지만, 기존 Netty 버전과 일치하도록 유지하는 것을 권장한다
—
spring.mongodb.embedded.features
속성 제거
- 임베디드 Mongo 3.4에서 Mongo 기능 설정에 대한 지원이 중단 되었다
- 그에 따라,
spring.mongodb.embedded.features
속성도 제거 되었다
—
Servlet-specific Mustache Properties
- 아래 속성들이 deprecated 되었다
spring.mustache.allow-request-override
spring.mustache.allow-session-override
spring.mustache.cache
spring.mustache.content-type
spring.mustache.expose-request-attributes
spring.mustache.expose-session-attributes
spring.mustache.expose-spring-macro-helpers
- 아래 속성들이 새로 소개되었다
spring.mustache.servlet.allow-request-override
spring.mustache.servlet.allow-session-override
spring.mustache.servlet.cache
spring.mustache.servlet.content-type
spring.mustache.servlet.expose-request-attributes
spring.mustache.servlet.expose-session-attributes
spring.mustache.servlet.expose-spring-macro-helpers
—
자동 구성 된 ReactiveElasticsearchTemplate 의 기본 인덱스 옵션
- 자동 구성 된 ReactiveElasticsearchTemplate의 기본 인덱스 옵션이 Spring Data Elasticsearch와 일치하도록 변경 되었다
- 기본값이 변경 되었다
strictExpandOpenAndForbidClosed
→strictExpandOpenAndForbidClosedIgnoreThrottled
- 이전 인덱스 옵션을 복원하려면
reactiveElasticsearchTemplate
Bean을 정의해야 한다
—
MongoDB 속성 우선순위
url
프로퍼티가 개발 프로퍼티보다 우선순위가 높아졌다spring.data.mongodb.url
이 설정 되면 위 프로퍼티는 무시된다- 이는
spring.redis.url
과 동작이 일치한다
—
Maven 프로세스에서 애플리케이션 실행
- 기본적으로
spring-boot:run
와spring-boot:start
플러그인은 application을 fork하여 동작하는데, 이제 이fork
작업을 비활성화 할 수 있다
—
Ordered Exit Code Generators
ExitCodeGenerators
는 이제 Ordered 구현과@Order
어노테이션에 따라 정렬 된다- 생성 되는 0이 아닌 첫 번재 종료 코드가 사용 된다
—
Metric Tag Keys Renamed
소문자
와.
구분 기호를 모두 사용하라는 Micrometer 의 권장 사항을 준수하기 위해 소문자로 되어 있던 메트릭 태그 키의 이름이 변경 되었다- 이전 네이밍을 사용하고 싶다면
MeterFilter
Bean을 정의하면 된다
—
Support for Elasticsearch’s RestHighLevelClient is Deprecated
- Elasticsearch가
RestHighLevelClient
를 deprecated 함에 따라, SpringBoot의 자동 구성RestHighLevelClient
도 deprecated 된다 - 이는
RestClient
로 대체해 사용할 수 있다
—
R2DBC Driver Changes
- Borca release에서는 PostgreSQL용 드라이버인 r2dbc-postgresql의 그룹 ID가 io.r2dbc → org.postgresql로 변경되었다
- MySQL driver인
r2dbc-mysql
은 삭제 되었고, 대안으로r2dbc-mariadb
를 고려해볼 수 있다
—
WebSecurityConfigurerAdapter 에서 SecurityFilterChain 으로의 마이그레이션
- SpringBoot 2.7에서 지원하는 Spring Security 버전이 5.7 로 업그레이드 되었는데, 이는
WebSecurityConfigurerAdapter
에 대한 deprectate를 포함한다 [WebSecurityConfigurerAdapter
없이 설정 하는 것](https://spring.io/blog/2022/02/21/spring-security-without-the-websecurityconfigureradapter)과,@WebMvcTest
를 사용해 테스트를 수행하는 경우,@Import
어노테이션으로 security configuration 클래스를 임포트 하여SecurityFilterChain
bean이 사용 가능하도록 추가 설정을 수행해야 한다
—
Building Jars With Maven Shade Plugin and Gradle Shadow Plugin
- 자동 구성 및 management context 클래스들이 검색 되는 방식이 변경 되었다
META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
META-INF/spring/org.springframework.boot.actuate.autoconfigure.web.ManagementContextConfiguration.imports
—
MIMEPull
org.jvnet.mimepull:mimepull
에 대한 종속성 관리가 제거 되었다
—
Support for Hazelcast 3.0 is Deprecated
- Hazelcast 3 에 대한 지원이 Deprecated 되었다
- 하지만 classpath에
hazelcast-client
를 추가함으로써 아직까진 사용이 가능하다
—
Spring MVC’s requestMappingHandlerMapping
is No Longer Primary
- 더 이상 MVC의 main
requestMappingHandlerMapping
Bean을@Primary
로 선언할 수 없다 RequestMappingHandlerMapping
을 주입받아야 할 때, 이러한 Bean이 여러가지 있을 경우@Qualifier
어노테이션으로 주입 선택이 가능하다- ``List
` 을 사용하여 모든 후보를 주입 받을 수 있다
—
MySQL JDBC Driver
- MySQL JDBC driver의 좌표가 변경 되었다
- 8.0.31 은
mysql:mysql-connector-java
,com.mysql:mysql-connector-j
에 publish 된다 - 8.0.32 이상은
com.mysql:mysql-connector-j
에만 publish 된다 - SpringBoot 2.7.8 이상의 버전에서는 8.0.32 로 업그레이드 되었기에 유의해야한다
—
Deprecations from Spring Boot 2.5
- SpringBoot 2.5에서 Deprecated 된 항목들이 모두 제거 된다
—
New and Noteworthy
—
New Spring GraphQL starter
spring-boot-starter-graphql
를 지원한다- the GraphQL section of the Spring Boot reference documentation
—
Support for RabbitStreamTemplate
- stream 이름이
spring.rabbitmq.stream.name
속성으로 정의 되어 있다면RabbitStreamTemplate
이 자동으로 구성 된다 - 자동 구성을 유지하면서 추가 인스턴스를 커스터마이징 할 수 있도록
RabbitStreamTemplateConfigurer
가 제공 된다 (RabbitTemplateConfigurer
과 유사)
—
Hazelcast @SpringAware
Support
- 임베디드 Hazelcast 서버는
SpringManagerContext
를 기본으로 사용한다 - 이로 인해, Hazelcast에 의해 인스턴스화 된 객체에 Spring Bean을 주입할 수 있다
HazelcastConfigCustomizer
콜백 인터페이스가 도입 되었다. 이 인터페이스를 사용하여 Hazelcast 서버 구성을 추가로 조정할 수 있다
—
Operating System Information in Info endpoint
OsInfoContributor
가 서비삭 동작 중인 OS에 대한 정보도 노출한다- 새로운 정보들은 기본적으로 비활성화 상태이다
management.info.os.enabled
속성으로 활성화 시킬 수 있다
—
Java Vendor Information in Info endpoint
JavaInfoContributor
가 벤더 버전 정보를 포함 한 벤더 정보를 제공한다- 모든 벤더가
java.vendor.version
을 노출하는 것은 아니기에version
필드는 null일 수 있음을 염두해 두어야 한다
—
Accessing the Authenticated Principal in RSocket Handler Methods
@Authenticated
어노테이션으로Principal
객체를 주입 받을 수 있다
—
Opaque Token Introspection Without the OIDC SDK
- opaque toke을 사용하여 OAuth2 인증을 하는 경우에, 더이상
com.nimbusds:oauth2-oidc-sdk
종속성을 필요로 하지 않는다 - SDK의 다른 용도에 따라 애플리케이션에서 종속성을 제거할 수 있다
—
@DataElasticsearchTest
- Spring Data Couchbase 를 사용 한 어플리케이션 테스트를 위한
@DataCouchbaseTest
어노테이션이 추가 되었다
—
@DataElasticsearchTest
- Spring Data Elasticsearch 를 사용 한 어플리케이션 테스트를 위한
@DataElasticsearchTest
어노테이션이 추가 되었다
—
Auto-configuration for SAML2 logout
- Spring Security’s SAML2 를 사용 한다면,
RP-initiated
혹은AP-initiated logout
을 프로퍼티로 구성할 수 있다
—
Changes to Auto-configuration
Auto-configuration Registration
- 자동 구성을 생성하였다면,
pring.factories
의org.springframework.boot.autoconfigure.EnableAutoConfiguration
키 아래에 있는 등록을META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
라는 새 파일로 이동해야 한 ,
로 구분된 단일 목록이 아닌 각 줄에는 자동 구성 클래스의 정규화된 이름이 포함 된다
New @AutoConfiguration Annotation
META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
파일에 나열 된 최상위 자동 구성 클래스에@AutoConfiguration
어노테이션을 달고,@Configuration
을 대체 하는 데 사용해야 한다@AutoConfiguration
클래스 내에 중첩 되거나, 임포트 된 Configuration 클래스는 이전과 같이@Configuration
어노테이션을 계속 사용해야 한다- 자동 구성 ordering을 제공 한다
after
,afterNames
,before
,beforeNames
- 이는
@AutoConfigureAfter
와@AutoConfigureBefore
를 대체할 수 있다
—
Test Slice Configuration
- 자체 test-slice를 생성한 경우, registration을
spring.factories
에서META-INF/spring/<name of your test slice annotation>.imports
로 변경해야 한다
—
FailureAnalyzer Injection
FailureAnalyzer
구현은 하나 혹은 둘 모두를 매개변수로 받는 생성자를 제공하며, 현재 application context의 BeanFactory 및 Environment에 접근이 가능하다BeanFactoryAware
를 구현함으로써BeanFactory
를 주입 받는 방법과,EnvironmentAware
를 구현함으로써Environment
를 주입 받는 방법은 추후에 deprecated 될 예정이다
—
Redis Sentinel Username Support
spring.redis.sentinel.username
프로퍼티를 사용하여 Sentinel 에서 username으로 인증하는 것을 지원한다
—
Overriding Built-in Sanitization
SanitizingFunction
Bean은 순서대로 호출 되며, 함수가SanitizableData
의 값을 변경하면 중지 된다SanitizingFunction
Bean이 없으면, 내장된 key-based sanitization이 수행 된다@Order
어노테이션 혹은Ordered
구현으로 동작한다
—
Docker Image Building
- Maven과 Gradle에서 Cloud Native Buildpacks 를 사용하여 image를 building할 때, Docker Engine 대신 Podman container engine이 사용 되도록 지원한다
—
Cache2k Support
- Cache2k 를 위한 종속성 관리 및 자동 구성이 추가 되었다
- 기본 캐시 설정은
Cache2kBuilderCustomizer
Bean을 통해 커스터마이징이 가능하다
—
Simplified Registration of Jackson Mixins
- Jackson의 자동 구성이
@JsonMixin
어노테이션이 명시 된 클래스를 찾는다 - 발견되는 모든 클래스는 자동 구성된
ObjectMapper
를 사용하여 자동으로 mixin으로 등록 된다
—
Web Server SSL Configuration Using PEM-encoded Certificates
- 임베디드 Web 서버는 PEM-encoded 된 인증서 및 private key 파일과 함께 SSL 을 구성할 수 있다
server.ssl.certificate
,server.ssl.certificate-private-key
,server.ssl.trust-certificate
,server.ssl.trust-certificate-private-key
프로퍼티 사용
- Management endpoints 는
management.server.ssl.*
프로퍼티를 사용할 수 있다
—
Dependency Upgrades
- Spring Data 2021.2
- Spring HATEOAS 1.5
- Spring LDAP 2.4
- Spring Security 5.7
- Spring Session 2021.2
- Elasticsearch 7.17
- Flyway 8.5
- H2 2.1
- Hazelcast 5.0
- Infinispan 13
- Json 2.9
- Json Path 2.7
- Kafka 3.1
- MariaDB 3.0
- Micrometer 1.9
- MongoDB 4.5
- OkHTTP 4.9
- REST Assured 4.5
- R2DBC
Borca
—
그 외 잡다한 사항들
- Kafka의
idlePartitionEventInterval
은spring.kafka.listener.idle-partition-event-interval
프로퍼티를 사용해 설정이 가능하다 KafkaTemplate
transactionIdPrefix
는spring.kafka.template.transaction-id-prefix
프로퍼티를 사용해 설정이 가능하다- Netty의
maxKeepAliveRequests
는server.netty.max-keep-alive-requests
프로퍼티로 설정이 가능하다 @DataJdbcTest
어노테이션은AbstractJdbcConfiguration
Bean들을 자동으로 스캔한다- SAML 2.0 Login을 사용할 때,
UserDetailsService
Bean이 더이상 자동 구성 되지 않는다 - Spring Batch 의 트랜잭션 격리 레벨을
spring.batch.jdbc.isolation-level-for-create
프로퍼티로 설정 가능하다 - Spring MVC metrics을 기록하는 filter들은
FilterRegistrationBean<WebMvcMetricsFilter>
Bean을 정의함으로써 대체가 가능하다 DatabaseDriver.MARIADB
의 ID가mysql
→mariadb
로 변경 되었다spring-boot-loader
의RandomAccessDataFile
에서 리턴 받는InputStream
은available()
를 구현한다- Spring Kafka 의
immediateStop
은spring.kafka.listener.immediate-stop
프로퍼티를 사용해 설정이 가능하다 - 신규 프로퍼티
spring.mustache.reactive.media-types
를 사용해 reactive Mustache view에서 지원 되는 media type을 구성할 수 있다 elasticsearch-rest-client
가 classpath에 있으면,RestClientBuilder
와RestClient
Bean들이 자동 구성 된다elasticsearch-rest-high-level-client
가 classpath에 있으면 이전과 동일하게RestHighLevelClient
Bean이 자동 구성 되지만, 이는 이제 deprecated 되었다
—
Deprecations in Spring Boot 2.7
spring.factories
로부터 로딩 되는 자동 구성이 deprecated 되었다DatabaseDriver.GAE
가 Deprecated 되었다pring.security.saml2.relyingparty.registration.{id}.identityprovide
내부 프로퍼티들이spring.security.saml2.relyingparty.registration.{id}.assertingparty
로 옮겨졌다- 이전 프로퍼티 이름을 사용할 경우, startup 시에 WARN 로그 메세지를 기록한다
반응형
'개발 > SpringBoot' 카테고리의 다른 글
(Java/Kotlin)[Spring Security] - Custom Filter를 제외하는 방법 (0) | 2023.11.28 |
---|---|
(Java/Kotlin)[Spring Security] - Custom Filter를 등록하는 방법 (feat.OncePerRequestFilter) (4) | 2023.11.25 |
Spring Boot 2.5 -> 2.6 변경 사항 (0) | 2023.06.15 |
Spring Boot 2.4 -> 2.5 변경 사항 (0) | 2023.06.12 |
Spring Boot 2.3 -> 2.4 변경 사항 (0) | 2023.06.08 |
댓글