SQL Script DataSource Initialization
spring.sql.init.*
properties를 통해schema.sql
,data.sql
로 SQL Initialization이 가능해졌다- embedded in-memory database에 한해서 지원한다 (JDBC, R2DBC를 지원한다)
- enable :
spring.sql.init.mode=always
- disable :
spring.sql.init.mode=never
- enable :
- embedded in-memory database에 한해서 지원한다 (JDBC, R2DBC를 지원한다)
- script-based SQL Database initialization은 Schema에 대한 분리 된 credentials을 제공하지 않는다.
- 이를 사용하고자 한다면
org.springframework.jdbc.datasource.init.DataSourceInitializer
Bean 에 정의하여 사용하도록 한다
- 이를 사용하고자 한다면
- 기본적으로 Hibernate가 initializae 되기 전에
data.sql
스크립트가 실행된다- 기본 스크립트 기반 초기화의 동작이 Flyway , Liquibase의 동작과 일치하게 된다
- Hibernate에서 생성 된 Schema를 사용하려면
spring.jpa.defer-datasource-initialization
옵션을true
로 설정한다 JdbcOperations
와 같은 특정 유형의 Bean은 데이터베이스가 초기화 된 이후 초기화 되도록 정렬 된다- DataSource와 함께 동작하는 Bean이 있는 경우
@DependsOnDatabaseInitialization
어노테이션을 명시하여, 데이터베이스가 초기화 된 이후에 해당 Bean이 초기화 될 수 있도록 한다
Flyway and Liquibase JDBC URLs
spring.flyway.url
과spring.liquibase.url
을 사용하는 경우, 추가적으로username
과password
를 명시해야한다- 이전 버전의 Springboot 에서는
spring.datasource
설정을 그대로 사용하였지만, 문제가 있다고 판단한 듯 하다
- 이전 버전의 Springboot 에서는
Spring Data JPA
getById
메서드가 추가 된다 (getOne
메서드를 대체한다)- SpringBoot 2.5 이후부터는
getOne
메서드 사용 시LazyLoadingException
를 던진다
Spring Data Solr
- Spring Data Solr를 위한 auto-configuration이 제거 된다 (Spring Data 2021.0.0 에서 제거)
Secure Info Endpoint
/info
actuator 엔드포인트가 더이상 기본적으로 web으로 노출되지 않는다- Spring Security가 classpath에 있고, application 사용자 정의 보안 구성이 없는 경우에도, 엔드포인트는 기본적으로 인증 된 접근을 요구한다
Task Scheduling Harmonization with Spring Integration
- Spring Integration은
TaskScheduler
를 재사용한다.- 이는 task scheduler의 pool size를 1로 사용한다는 것과 같은 의미이며
- 기존 10 threads pool size를 사용하려면
spring.task.scheduling.pool.size
property를 사용할 것
Default Expression Language (EL) Implementation
- SpringBoot Web , SpringBoot validation starter의 EL 구현이 변경되었다
Messages in the Default Error View
- 기본 error view 에서
message
속성이 표시되지 않을 때, 비워지지 않고 제거 된다
Logging Shutdown Hooks
- jar 기반 application에서 logging 종료 hook을 통해 JVM이 종료될 때, logging 리소스를 반환하게 된다
logging.register-shutdown-hook
property로 제어가 가능하다
Gradle Default jar and war Tasks
- Spring Boot Gradle 플러그인은 더 이상 표준 Gradle jar 및 war 작업을 자동으로 비활성화하지 않는다
Cassandra Throttling Properties
- 더 이상
spring.data.cassandra.request.throttler
property를 제공하지 않는다
Customizing jOOQ’s DefaultConfiguration
- jOOQ의
DefaultConfiguration
커스터마이징을 간소화하기 위해DefaultConfigurationCustomizer
를 구현하는 빈을 정의할 수 있다
Groovy 3
- default Groovy 버전이 3.x로 업그레이드 되었다
Minimum Requirements Changes
- Gradle은 최소 6.8 이상 지원한다
Hibernate Validator 6.2
- Hibernate Validator의 기본 버전이 6.2.x 로 업그레이드 되었다
Deprecations from Spring Boot 2.3 and 2.4
- SpringBoot 2.3 버전에서 Deprecated 된 Code들이 모두 제거되었다
- SpringBoot 2.4 버전에서 Deprecated 된 Code들은 SpringBoot 2.6 Release에서 제거 될 예정이다
Environment Variable Prefixes
- 다중 SpringBoot Application에서 stytem environment variable의 prefix를 설정할 수 있다
HTTP/2 over TCP (h2c)
- embedded web container의 TCP 통신에 추가적인 커스텀 작업 없이 HTTP/2 통신을 지원한다
server.http2.enabled
property 를true
로 주어 사용이 가능하다- default = false
- 기존 h2 지원과 마찬가지로, 사용 중인 임베디드 웹 서버에 따라 h2c를 사용하려면 추가 종속성이 필요할 수 있다
Generic DataSource Initialization
- DataSource를 초기화 하는 코드를 작성하는 경우, 새로운 매커니즘을 사용할 수 있다
- 해당 매커니즘은 내부적으로 Flyway, Liquibase 및 Script 기반 초기화에 대한 올바른 빈 종속성을 설정하는 데 사용 된다
Database Initialization with R2DBC
- R2DBC를 통해 접근하는 SQL 기반 DB에 대한 script 기반 초기화가 지원된다
spring.sql.init.*
프로퍼티로 커스터마이징이 가능하다
Liquibase DataSource
- Liquibase를 사용하는 커스텀 DataSource를 정의할 때,
SimpleDriverDataSource
로 설정을 제어할 수 있다
Layered WARs
- Maven 및 Gradle 플러그인을 사용하여 Docker 이미지와 함께 사용할 계층화된 WAR을 생성할 수 있다
Docker Image Building Support
buildpacks
프로퍼티를 이용하여 custom Buildpacks의 사용을 지원한다- Maven 및 Gradle 플러그인은 모두 buildpack 빌더에 전달할 수 있는 볼륨 바인딩을 지원한다
- buildpack이 사용할 로컬 경로 또는 볼륨을 바인딩할 수 있다
- Maven 및 Gradle 플러그인이 실행 가능한 war 파일을 Docker 이미지로 패키징할 수 있다
OpenMetrics for Prometheus
- /actuator/prometheus 엔드포인트는 표준 Prometheus 응답과, OpenMetrics 응답을 둘 다 지원한다
- accept 헤더에 따라 응답 유형이 달라진다
Metrics for Spring Data Repositories
@Timed
어노테이션을 사용하여 WebFlux Controller 및 functional handler가 처리하는 요청의 타이밍을 수동으로 설정할 수 있다management.metrics.web.server.request.autotime.enabled
프로퍼티를false
로 설정해야 사용이 가능하다
MongoDB Metrics
- Actuator 사용 시, MongoDB의 connection pool과 client가 보낸 명령에 대한 metric이 자동으로 생성 된다
Actuator Endpoint for Quartz
/quartz
엔드포인트가 추가 되었다- 해당 엔드포인트는 Quartz jobs와 triggers에 대한 세부 정보를 제공한다
GET
requests to actuator/startup
- actuator의
startup
엔드포인트가GET
요청을 지원합니다 POST
와는 달리GET
요청 시, 이벤트 buffer를 소진하지 않으며, 이벤트는 메모리에 유지 된다
Abstract Routing DataSource Health
- actuator의 health 엔드포인트에
AbstractRoutingDataSource
의 상태가 표시된다 - 각
DataSource
는 라우팅 키를 이용하여 이름이 지정 된다 management.health.db.ignore-routing-data-sources
프로퍼티로 해당 기능을 제어할 수 있다
Java 16 Support
- Java 16을 지원한다
- Java 8 또한 여전히 지원한다
Gradle 7 Support
- Gradle 7.0.x 버전을 지원한다
Jetty 10 Support
- SpringBoot 2.5의 embedded web server 에서 Jetty 10을 사용할 수 있다
- 하지만 Jetty 10 에선 Java 11을 요구하기에, SpringBoot 2.5 에선 Jetty 9를 기본값으로 제공하고 있다 (Java 8을 아직 서포트하기에..)
- Jetty 10을 사용하고자 한다면
jetty.version
프로퍼티를 이용한다
그 외 자잘한 사항들
- Actuator 엔트포인트 허용 패턴을 명시하기 위해
management.endpoints.web.cors.allowed-origin-patterns
프로퍼티를 사용할 수 있다 HttpSessionIdListener
bean이 자동으로 servlet context에 등록 된다Couchbase
가 auto-configured 된ObjectMapper
를 기본값으로 사용한다- Elasticsearch의
Sniffer
가 auto-configured 된다 (classpath에elasticsearch-rest-client-sniffer
모듈이 존재할 때만) spring.data.cassandra.controlconnection.timeout
프로퍼티로 로 Cassandra의 connection timeout설정이 가능하다spring.kafka.listener.only-log-record-metadata
프로퍼티로 retry시 logging 할 내용을 구성할 수 있다- Apache Phoenix 가
jdbc:phoenix
JDBC URL 을 감지할 수 있도록 지원한다 - RabbitMQ의 키 저장소 및 신뢰 저장소 알고리즘에 대한 구성 속성
/actuator
discovery page를management.endpoints.web.discovery.enabled
속성으로 disabled 할 수 있다/actuator/configprops
와actuator/env
앤드포인트가additional-keys-to-sanitize
프로퍼티를 사용할 수 있다- JMX actuator endpoint를 커스터마이즈 하고 싶다면,
EndpointObjectNameFactory
를 사용할 수 있다 - 새로운
DataSource
를 생성하고자 한다면,DataSourceBuilder.derivedFrom(…)
메서드를 사용할 수 있다 - Spring Security가 classpath에 있는 경우, 구성 속성을
RSAPublicKey
및RSAPrivateKey
에 바인딩할 수 있다 - RabbitMQ
ConnectionFactory
는ConnectionFactoryCustomizer
bean으로 커스터마이징이 가능하다 spring.datasource.embedded-database-connection
프로퍼티로 embedded database를 컨트롤 할 수 있다CloudPlatform
이 Azure App Service를 자동으로 감지한다server.tomcat.keep-alive-timeout
프로퍼티로 tomcat이 keep-alive-connection을 close 하기까지 요청을 어느정도 기다릴 것인지 설정이 가능하다server.tomcat.max-keep-alive-requests
프로퍼티로 tomcat이 keep-alive-connection을 종료하기 전에 얼마나 많은 요청을 수용할 것인지 설정이 가능하다spring.webflux.session.cookie.same-site
프로퍼티허 Webflux의 SameSite cookie 정책을 사용할 수 있다- Apache HttpClient 5 가 WebClient에 auto-configured 된다
- 새로운
ApplicationEnvironment
클래스가 추가되었다 (약간의 성능 향상이 있었다) spring.netty.leak-detection
프로퍼티로 Netty 메모리 관련 설정이 가능하다
Dependency Upgrades
- Spring Data 2021.0
- Spring Integration 5.5
- Spring Security 5.5
- Spring Session 2021.0
- Spring HATEOAS 1.3
- Spring Kafka 2.7.0
- third-party update
- Kotlin 1.5
- Groovy 3.0
- Flyway 7.7
- Liquibase 4.3
- Jackson 2.12
- Kafka 2.7
- Cassandra Driver 4.10
- Embedded Mongo 3.0
- Hibernate Validator 6.2
- Jersey 2.33
- Mockito 3.7
- MongoDB 4.2
- JUnit Jupiter 5.7
- Elasticsearch 7.12
Deprecations
ActuatorMediaType
와ApiVersion
이org.springframework.boot.actuate.endpoint
프로퍼티로 대체 된다- jOOQ 의
*Provider
콜백 인터페이스나Settings
에 대한 서포트가 종료된다. 대신DefaultConfigurationCustomizer
가 해당 기능을 대체한다 EntityManagerFactoryDependsOnPostProcessor
의 위치가org.springframework.boot.autoconfigure.data.jpa
에서org.springframework.boot.autoconfigure.orm.jpa
로 변경 된다[spring.artemis.host](http://spring.artemis.host)
와spring.artemis.port
가 제거된다. 대신spring.artemis.broker-url
를 사용할 수 있다
반응형
'개발 > SpringBoot' 카테고리의 다른 글
Spring Boot 2.6 -> 2.7 변경 사항 (0) | 2023.06.19 |
---|---|
Spring Boot 2.5 -> 2.6 변경 사항 (0) | 2023.06.15 |
Spring Boot 2.3 -> 2.4 변경 사항 (0) | 2023.06.08 |
Spring Boot 3.0 → 3.1 변경 사항 (0) | 2023.06.05 |
Spring Boot Release Notes 정리 시작 (0) | 2023.06.05 |
댓글