전체 Release Notes 목록은 이곳에서 확인할 수 있습니다.
https://luvstudy.tistory.com/tag/Release%20Notes
https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.5-Release-Notes
13 revision 기준으로 작성됨
Upgrading from Spring Boot 3.4
spring-boot-parent
spring-boot-parent
module 은 더 이상 publish 되지 않습니다.
이 module은 Spring Boot 자체 test 등에서 사용되는 내부 dependency에 대한 dependency management를 제공합니다.spring-boot-parent
를 사용 중이었다면 application의 요구 사항을 충족하는 자체 dependency management로 교체하세요.
Actuator 'heapdump' Endpoint
heapdump
actuator endpoint는 이제 default로 access=NONE
으로 설정됩니다..
이는 잘못된 구성으로 인해 민감한 정보가 유출될 가능성을 줄이는데 도움이 됩니다.
사용하려면 이제 expose 설정을 하고 access 설정도 해야 합니다. (이전에는 expose만 설정하면 됐습니다.)
다음 구성을 참고하세요.
management:
endpoints:
web:
exposure:
include: heapdump
endpoint:
heapdump:
access: unrestricted
Using '.enabled' and Other Boolean Configuration Properties
이번 release에서는 .enabled
properties에 지원되는 값이 더욱 강화되어 일관성이 향상되었습니다.
이제 값은 true
또는 false
여야 합니다.
이전 버전의 Spring Boot에서는 false
외의 모든 값을 고려하는 조건을 사용하는 경우가 있었습니다.
Validation of Profile Naming
이번 release에서는 profile naming 규칙이 더욱 강화되어 일관성이 향상되었습니다.
profile에는 이제 -
(dash), _
(underscore), 문자 및 숫자만 사용할 수 있습니다.
또한 profile은 -
또는 _
로 시작하거나 끝날 수 없습니다.
Follow Redirects with TestRestTemplate
이제 TestRestTemplate
은 일반 RestTemplate
과 동일한 redirect 설정을 사용합니다.
HttpOption.ENABLE_REDIRECTS
옵션도 더 이상 지원되지 않습니다.
새로운 기본 설정으로 인해 테스트에 문제가 발생하는 경우 TestRestTemplate.withRedirects(...)
method를 사용하여 대체 redirect strategy를 선택할 수 있습니다.
Auto-configured TaskExecutor Names
이전에는 Spring Boot에서 TaskExecutor
를 taskExecutor
및 applicationTaskExecutor
bean name으로 auto-configure 했습니다.
이번 release에서는 applicationTaskExecutor
bean name만 제공됩니다.Executor
name으로 auto-configure 요청하는 코드는 applicationTaskExecutor
를 사용하도록 수정해야 합니다.
이 동작에 의존하고 즉시 변경할 수 없는 경우 다음 예와 같이 BeanFactoryPostProcessor
를 사용하여 alias를 추가할 수 있습니다:
@Configuration
public class MyConfiguration {
@Bean
static BeanFactoryPostProcessor taskExecutorAliasBeanFactoryPostProcessor() {
return (beanFactory) -> beanFactory.registerAlias("applicationTaskExecutor", "taskExecutor");
}
}
Groovy Template Configuration Properties
spring.groovy.template.configuration.*
proeprties는 신규 및 기존에 존재하던 spring.groovy.template.*
properties로 인해 더 이상 사용되지 않습니다.
자세한 내용은 configuration-changelog 을 참조하세요.
Redis
spring.data.redis.url
를 구성하면 URL에 따라 사용되는 Redis database가 결정됩니다.
URL에 database가 지정되지 않으면 기본 값 0
이 사용됩니다.
spring.data.redis.url
이 구성되면 spring.data.redis.database
property는 무시되고, 해당 속성의 동작이 host, port, username 및 password properties에 맞춰집니다.
Prometheus Pushgateway
Prometheus Pushgateway 에 metric을 push 하려면 이제 io.prometheus:simpleclient_pushgateway
대신 io.prometheus:prometheus-metrics-exporter-pushgateway
가 필요합니다.
새 client의 Pushgateway 지원에도 configuration 변경이 필요할 수 있습니다.
management.prometheus.metrics.export.pushgateway.base-url
를 사용하고 있었다면 management.prometheus.metrics.export.pushgateway.address
로 바꾸고 값을 조정하여 host:port
의 형태로 만드세요.
새로운 Pushgateway를 지원하기 위해 세 개의 새로운 properties가 추가되었습니다.
management.prometheus.metrics.export.pushgateway.format
management.prometheus.metrics.export.pushgateway.scheme
management.prometheus.metrics.export.pushgateway.token
metric을 push 할 때 SSL을 사용하려면 scheme
property를 https
로 설정합니다.
token 기반 인증을 사용하려면 (기존 username
및 password
property 대신) token
property를 설정하세요.
protobuf 대신 text로 metric을 push 하려면 format
property를 text
로 설정하세요.
Native Test with Maven
nativeTest
profile은 multi-module 프로젝트에 친화적 이도록 native
profile과 조화를 이루게 되었습니다.
The nativeTest
profile has been harmonized with native
to make it friendly for multi-module projects.
Spring Boot 및 Native Build tools plugin이 프로젝트에 정의되어 있지 않으면 Native test 실행이 발생하지 않습니다.
이는 이미 native
profile에서도 마찬가지입니다.
자세한 내용은 문서 를 참조하세요.
ECS Structured Logging JSON
ECS structure logging의 JSON 출력이 nested format을 사용하도록 업데이트되었습니다.
이는 JSON을 소비하는 backend와의 호환성을 향상할 것입니다.
배경 정보는 https://github.com/spring-projects/spring-boot/issues/45063 를 참조하세요
Deprecations from Spring Boot 3.3
Spring Boot 3.3에서 더 이상 사용되지 않고 3.5에서 삭제 예정이었던 class, method, properties가 이번 릴리스에서 삭제되었습니다.
upgrade 하기 전에 더 이상 사용되지 않는 method를 호출하거나 더 이상 사용되지 않는 기능을 사용하지 않는지 확인하세요.
Minimum Requirements Changes
None.
New and Noteworthy
TIP: configuration 변경 사항에 대한 완전한 개요는 구성 변경 로그를 확인하세요.
Annotations to Register Filter and Servlet
ServletRegistrationBean
및 FilterRegistrationBean
의 annotation 기반 대안으로 두 가지 새로운 annotation이 추가되었습니다.
다음 예제와 같이 @ServletRegistration
은 Servlet
을 등록하는 데 사용할 수 있고, @FilterRegistration
은 Filter
를 등록하는 데 사용할 수 있습니다:
@Configuration(proxyBeanMethods = false)
class MyConfiguration {
@Bean
@FilterRegistration(name = "my-filter", urlPatterns = "/test/*", order = 0)
MyFilter myFilter() {
return new MyFilter();
}
}
또한, empty dispatcher type에 대한 FilterRegistrationBean
의 동작이 조정되었습니다.
이전에는 empty DispatcherType
set을 setDispatcherTypes
method에 전달할 수 있었으며, 이 empty set은 서버로 전달되었습니다.
이제는 setDispatcherTypes(null)
을 호출하는 것과 동일한 동작을 하며, 이는 FilterRegistration
annotation과 일치합니다.
Load Properties From Environment Variables
environment variable에서 하나의 property를 로드하는 것이 이미 가능했지만, 이제는 single environment variable에서 여러 property들을 로드하는 것이 가능합니다.
예를 들어, 다음 내용을 가진 multi-line environment variable MY_CONFIGURATION
:
my.var1=value1
my.var2=value2
은 이제 env:
prefix를 사용하여 가져올 수 있습니다:
spring.config.import=env:MY_CONFIGURATION
이후, my.var1
과 my.var2
는 Environment
에서 사용할 수 있습니다.
이 기능은 properties와 yaml 형식을 지원합니다.
자세한 내용은 문서 를 참조하세요.
Customizing Structured Logging Stack Traces
structured logs에 작성된 Stack Trace는 이제 size를 제한하거나 다른 format으로 출력하도록 사용자 정의할 수 있습니다.
stack trace 출력을 구성하기 위해 logging.structured.json.stacktrace.*
속성을 사용할 수 있습니다.
자세한 내용은 업데이트된 참조 문서를 참조하세요.
ClientHttpConnector Builder and Configuration Properties
WebClient
사용자는 이제 timeout 및 redirect 설정과 같은 global configuration에 proeprty를 사용할 수 있습니다.
이 기능은 Spring Boot 3.4에서 blocking clients를 위해 추가한 지원과 일치합니다.
자세한 내용은 업데이트된 참조 문서를 참조하세요.
새로운 속성 외에도, 새로운 ClientHttpConnectorBuilder
interface를 사용하여 더 복잡한 사용자 정의를 할 수 있습니다.
SSL Support for Service Connections
선택된 service connection에 대한 client 측 SSL 지원이 추가되었습니다.
다음 service connection에 대해 지원됩니다:
- Cassandra
- Couchbase
- Elasticsearch
- Kafka
- MongoDB
- RabbitMQ
- Redis
Testcontainers 및 Docker Compose 통합도 SSL 구성을 허용하도록 업데이트되었습니다.
Testcontainers의 경우 새로운 annotation을 사용할 수 있고, Docker Compose의 경우 label 을 사용할 수 있습니다.
Task Decoration for Scheduled Tasks
TaskDecorator
bean이 있는 경우, 자동 구성된 taskScheduler
bean에 적용됩니다.
또한 자동 구성된 ThreadPoolTaskSchedulerBuilder
및 SimpleAsyncTaskSchedulerBuilder
bean에도 적용됩니다.
이러한 builder를 사용하여 생성된 모든 schedulers에서 사용됩니다.
AsyncTaskExecutor with Custom Executor
Executor
bean이 존재하더라도 Spring Boot는 이제 AsyncTaskExecutor
를 자동 구성하도록 설정할 수 있습니다.
이를 위해 spring.task.execution.mode
property를 force
로 설정하세요.
이 mode로 실행할 때, 일반적인 @Async
처리를 포함한 모든 통합이 자동 구성된 executor를 사용하도록 보장합니다,AsyncConfigurer
bean이 정의되지 않은 경우에 한해서입니다.
OpenTelemetry
Spring Boot는 이제 OTEL_RESOURCE_ATTRIBUTES
및 OTEL_SERVICE_NAME
environment variable을 지원합니다.
configuration property를 통해 구성된 resource attribute는 environment variable의 property보다 우선합니다.
또한, service.namespace
resource attribute에 대한 지원이 추가되었습니다.
이 attribute의 값은 spring.application.group
configuration property에서 읽어옵니다.
service.group
resource attribute에 대한 지원은 더 이상 사용되지 않으며 향후 릴리스에서 제거될 예정입니다.
이제 사용자 정의 BatchSpanProcessor
bean을 정의할 수 있습니다.
span export는 이제 management.tracing.opentelemetry.export
prefix 아래에 새로 추가된 property 들로 구성할 수 있습니다.
Spring Batch
Spring Batch에서 사용하는 JobParametersConverter
는 이제 해당 type의 bean을 정의하여 사용자 정의할 수 있습니다.
그러한 bean이 정의되지 않은 경우 이전과 같이 DefaultJobParametersConverter
가 사용됩니다.
새로운 spring.batch.jdbc.validate-transaction-state
property를 사용하여 transaction statie의 검증 여부를 제어할 수 있습니다.
기본 동작은 변경되지 않았으며 transaction state는 검증됩니다.
Ignore Properties When Using spring-boot-configuration-processor
spring-boot-configuration-processor
를 사용할 때, 이제 META-INF/additional-spring-configuration-metadata.json
파일을 사용하여 property를 무시할 수 있습니다:
{
"ignored": {
"properties": [
{
"name": "my.age"
}
]
}
}
이렇게 하면 생성된 spring-configuration-metadata.json
파일에서 my.age
가 제거됩니다.
또한 my.age
가 무시되었다는 정보도 생성된 spring-configuration-metadata.json
파일에 기록됩니다.
OAuth 2 Client Auto-configuration
OAuth 2 client 자동 구성이 이제 더 많은 상황에서 적용되며 더 세분화되었습니다.
OAuth2ClientAutoConfiguration
은 reactive web application이 아닌 다른 모든 것에서 OAuth 2 client 관련 bean을 구성합니다.OAuth2ClientWebSecurityAutoConfiguration
은 servlet web application에서 OAuth 2 client 기반 web security를 구성합니다.ReactiveOAuth2ClientAutoConfiguration
은 servlet web application이 아닌 다른 모든 것에서 reactive OAuth 2 client 관련 bean을 구성합니다.ReactiveOAuth2ClientWebSecurityAutoConfiguration
은 reactive web application에서 OAuth 2 client 기반 web security를 구성합니다.
Auto-configuration for Bean Background Initialization
Spring Boot는 이제 bootstrapExecutor
라는 bean이 아직 없는 경우 자동으로 구성합니다.
이를 위해서는 context에 applicationTaskExecutor
라는 bean이 있어야 하며, 이는 사용자 정의 Executor
bean을 정의하지 않은 경우의 기본값입니다.
이를 통해 bean background initialization 을 즉시 사용할 수 있습니다.
Redis
spring.data.redis.lettuce.read-from
property을 사용하여 ReadFrom
을 구성하는 지원이 추가되었습니다.
Liquibase
관리되는 Liquibase 버전은 이제 4.31.0입니다.
두 가지 새로운 Liquibase 속성이 추가되었습니다:
spring.liquibase.analytics-enabled
– 제품 사용 데이터 및 분석 정보를 Liquibase에 전송할지 여부spring.liquibase.license-key
– Liquibase Pro license key
이러한 속성을 사용하려면 Liquibase 4.31.0 이상이 필요합니다.
Vibur Connection Pool
DataSourceBuilder
를 사용하여 Vibur DBCP connection pool 을 구성하기 위한 지원이 추가되었습니다.
Dependency management도 org.vibur:vibur-dbcp
를 포함하도록 업데이트되었습니다.
Testcontainers and Docker Compose support for lldap/lldap containers
lldap/lldap
image를 사용하는 container는 이제 Docker Compose 및 Testcontainers와 함께 사용할 수 있습니다.
Testcontainers는 LLdapContainer
로 이 image를 지원합니다.
Cloud Native Buildpacks
Ubuntu Noble
default builder가 paketobuildpacks/builder-noble-java-tiny
로 변경되었습니다.
결과 이미지에는 shell이나 다른 utility 들이 포함되어 있지 않습니다.
shell이 필요한 경우 paketobuildpacks/ubuntu-noble-run-base
를 run image로 사용할 수 있습니다.
Docker Config Authentication
Maven과 Gradle plugin 모두 이제 docker config.json
파일의 인증 설정을 사용하려고 시도합니다.
여기에는 MacOS keychain과 같은 것을 지원하기 위한 자격 증명 도우미 실행에 대한 지원이 포함됩니다.
Triggering Quartz Jobs From the Actuator
이제 Quartz Actuator endpoint를 사용하여 /actuator/quartz/jobs/\{groupName}/\{jobName}
URL로 HTTP POST를 보내 Quartz 작업을 실행할 수 있습니다.
예제는 업데이트된 REST 문서 를 참조하세요.
SSL Bundle Metrics
Spring Boot Actuator는 이제 SSL bundle에 대한 metric을 제공합니다.
ssl.chains
metric은 chain 수와 그 상태(valid, expired, soon-to-be-expired, not-yet-valid)를 계산합니다.
ssl.chain.expiry
metric은 각 인증서 체인이 만료될 때까지의 초 단위로 추적합니다.
The metric ssl.chain.expiry
tracks the number of seconds until expiry for each certificate chain.
Mappings Endpoint
mappings endpoint는 이제 WebMvc.fn router function 에 대한 정보를 포함합니다.
업데이트된 응답 구조에 대한 자세한 내용은 Actuator REST API 문서 를 참조하세요.
Dependency Upgrades
Spring Boot 3.5는 여러 Spring 프로젝트의 새 버전으로 이동합니다:
- https://github.com/spring-projects/spring-authorization-server/releases/tag/1.5.0[Spring Authorisation Server 1.5.0]
- https://github.com/spring-projects/spring-data-bom/releases/tag/2025.0.0[Spring Data 2025.0.0]
- https://github.com/spring-projects/spring-graphql/releases/tag/v1.4.0[Spring GraphQL 1.4.0]
- https://github.com/spring-projects/spring-hateoas/releases/tag/2.5.0[Spring HATEOAS 2.5.0]
- https://github.com/spring-projects/spring-integration/releases/tag/v6.5.0[Spring Integration 6.5.0]
- https://github.com/spring-projects/spring-ldap/releases/tag/3.3.0[Spring LDAP 3.3.0]
- https://github.com/spring-projects/spring-security/releases/tag/6.5.0[Spring Security 6.5.0]
- https://github.com/spring-projects/spring-session/releases/tag/3.5.0[Spring Session 3.5.0]
- https://github.com/spring-projects/spring-ws/releases/tag/v4.1.0[Spring WS 4.1.0]
수많은 third-party dependency 들도 업데이트되었으며, 그중 주목할 만한 것은 다음과 같습니다:
- https://activemq.apache.org/components/artemis/download/release-notes-2.40.0[Artemis 2.40]
- https://github.com/assertj/assertj/releases/tag/assertj-build-3.27.3[AssertJ 3.27]
- https://github.com/awaitility/awaitility/wiki/ReleaseNotes4.3[Awaitility 4.3]
- https://github.com/openzipkin/brave/releases/tag/6.1.0[Brave 6.1.0]
- https://github.com/raphw/byte-buddy/releases/tag/byte-buddy-1.17.0[Byte Buddy 1.17]
- https://github.com/ben-manes/caffeine/releases/tag/v3.2.0[Caffeine 3.2]
- Cassandra Driver 4.19
- https://commons.apache.org/proper/commons-codec/changes-report.html#a1.18.0[Commons Codec 1.18]
- https://commons.apache.org/proper/commons-dbcp/changes-report.html#a2.13.0[Commons DBCP 2.13]
- https://www.elastic.co/guide/en/elasticsearch/reference/current/release-notes-8.17.0.html[Elasticsearch Client 8.17]
- https://documentation.red-gate.com/flyway/release-notes-and-older-versions/release-notes-for-flyway-engine[Flyway 11.7]
- https://github.com/graphql-java/graphql-java/releases/tag/v23.1[GraphQL Java 23.1]
- https://github.com/google/gson/releases/tag/gson-parent-2.13.1[Gson 2.13]
- https://github.com/hamcrest/JavaHamcrest/releases/tag/v3.0[Hamcrest 3.0]
- HikariCP 6.3
- https://github.com/HtmlUnit/htmlunit/releases/tag/4.11.1[HtmlUnit 4.11]
- https://github.com/influxdata/influxdb-java/releases/tag/influxdb-java-2.25[InfluxDB Java 2.25]
- https://github.com/FirebirdSQL/jaybird/releases/tag/v6.0.1[Jaybird 6.0]
- https://junit.org/junit5/docs/5.12.1/release-notes/#release-notes-5.12.2[JUnit Jupiter 5.12]
- https://downloads.apache.org/kafka/3.9.0/RELEASE_NOTES.html[Kafka 3.9]
- https://github.com/liquibase/liquibase/releases/tag/v4.31.0[Liquibase 4.31]
- https://github.com/micrometer-metrics/micrometer/releases/tag/v1.15.0[Micrometer 1.15.0]
- https://github.com/micrometer-metrics/tracing/releases/tag/v1.5.0[Micrometer Tracing 1.5.0]
- https://github.com/mockito/mockito/releases/tag/v5.17.0[Mockito 5.17]
- https://github.com/mongodb/mongo-java-driver/releases/tag/r5.4.0[MongoDB 5.4]
- https://github.com/microsoft/mssql-jdbc/releases/tag/v12.10.0[MSSQL JDBC 12.10]
- https://dev.mysql.com/doc/relnotes/connector-j/en/news-9-2-0.html[MySQL 9.2]
- https://github.com/open-telemetry/opentelemetry-java/releases/tag/v1.49.0[OpenTelemetry 1.49]
- Oracle Database 23.7.0.25.01
- https://pulsar.apache.org/release-notes/versioned/pulsar-4.0.4[Pulsar 4.0]
- https://github.com/apache/pulsar-client-reactive/releases/tag/v0.6.0[Pulsar Reactive 0.6.0]
- https://github.com/quartz-scheduler/quartz/releases/tag/v2.5.0[Quartz 2.5]
- https://github.com/asyncer-io/r2dbc-mysql/releases/tag/r2dbc-mysql-1.4.1[R2DBC MySQL 1.4]
- https://github.com/rabbitmq/rabbitmq-java-client/releases/tag/v5.25.0[Rabbit AMQP Client 5.25]
- https://github.com/rabbitmq/rabbitmq-stream-java-client/releases/tag/v0.23.0[Rabbit Stream Client 0.23]
- https://github.com/SeleniumHQ/selenium/releases/tag/selenium-4.31.0[Selenium 4.31]
- https://github.com/SeleniumHQ/htmlunit-driver/releases/tag/htmlunit-driver-4.30.0[Selenium HtmlUnit 4.30]
- SnakeYAML 2.4
- https://github.com/xerial/sqlite-jdbc/releases/tag/3.49.1.0[SQLite JDBC 3.49]
- https://github.com/testcontainers/testcontainers-java/releases/tag/1.21.0[Testcontainers 1.21]
- https://github.com/ultraq/thymeleaf-layout-dialect/releases/tag/3.4.0[Thymeleaf Layout Dialect 3.4.0]
- https://github.com/pingidentity/ldapsdk/releases/tag/7.0.2[UnboundID LDAPSDK 7.0]
- WebJars Locator Lite 1.1
- https://github.com/openzipkin/zipkin-reporter-java/releases/tag/3.5.0[Zipkin Reporter 3.5.0]
Miscellaneous
위에 나열된 변경 사항 외에도 다음과 같은 많은 소소한 조정 및 개선 사항이 있습니다:
- Postgres docker container의
application_name
proerty은 이제 기본적으로spring.application.name
을 사용하여 구성됩니다. - Jackson에 대한 자동 구성은 추가된 모듈을 덮어쓰기보다는 실행 전에 추가된 모듈을 유지합니다.
- Tomcat 커넥터의 최대 parameter 수는
server.tomcat.max-parameter-count
property을 사용하여 구성할 수 있습니다. - Actuator의 process info contributor는 이제 JDK 24 이상에서 실행할 때 virtual thread 정보를 포함합니다.
- ECS structured logging format은 이제 Logback과 Log4j의 marker를
tags
field에 추가합니다. - Spring Boot는 이제 Logback 초기화 중에 콘솔에 오류 메시지를 출력하기 위해 Logback
OnErrorConsoleStatusListener
를 install 합니다. ErrorAttributes
에서 반환된 'error' 항목은 이제 안전한 JSON 직렬화를 보장하기 위해 모든MessageSourceResolvable
instance를 wrapping 합니다.- Zipkin 자동 구성은 이제 기본적으로
ZipkinHttpClientSender
를 사용하며,HttpClient
class를 사용할 수 없는 경우URLConnectionSender
가 사용됩니다. - 새로운
@ConditionalOnBooleanProperty
annotation이 도입되었습니다. - Bitnami의 PostgreSQL image를 Docker Compose와 함께 사용할 때 empty password가 이제 지원됩니다.
지원을 활성화하려면 container의 environment에ALLOW_EMPTY_PASSWORD
를 설정하세요. - 새로운 property
management.server.accesslog.prefix
를 사용하여 이제 관리 서버의 access log prefix를 사용자 정의할 수 있습니다. - AWS Advanced JDBC Wrapper는 이제
jdbc:aws-wrapper:…
URL에서 자동 감지되므로spring.datasource.driver-class-name
을 구성할 필요가 없습니다. - 새로운
spring.validation.method.adapt-constraint-violations
property를true
로 설정하여ConstraintViolation
을MethodValidationResult
로 적용할 수 있습니다. io.micrometer:micrometer-java21
이 classpath에 있으면VirtualThreadsMetrics
bean이 이제 자동으로 구성됩니다.-
- native image에서 실행할 때 더 이상
java.home
system property가 사용되지 않습니다.
- native image에서 실행할 때 더 이상
- 새로운 property
spring.jooq.config
를 사용하여 외부 jOOQsettings.xml
file 또는 resource를 지정할 수 있습니다. TrustManagerFactory
또는TrustManager
에서SslManagerBundle
을 생성하기 위한 새로운 factory method가SslManagerBundle
에 추가되었습니다.logging.structured.json.customizer
property는 이제 여러 개의 사용자 정의자를 허용합니다.- 새로운
spring.r2dbc.pool.acquire-retry
property가 추가되었습니다. @ConditionalOnBean
은 이제 generic@Bean
return type을 지원합니다.@ConditionalOnProperty
및@ConditionalOnBooleanProperty
는 이제@Repeatable
입니다.spring.datasource.dbcp2
,spring.datasource.hikari
,spring.datasource.oracleucp
및spring.datasource.tomcat
prefix를 가진 일부 바인딩 불가능한 property들이spring-configuration-metadata.json
에서 제거되었습니다.- 새로운 property
spring.mvc.contentnegotiation.default-content-types
를 사용하여 Spring MVC의 default content type을 구성할 수 있습니다. - servlet 및 reactive stack을 위한
EndpointRequest
는 이제 HTTP method에 대한 매칭을 지원합니다. SanitizingFunction
은 이제 편리한 builder method를 제공합니다.
예제로SanitizingFunction.sanitizeValue()
를 참고하세요.@ConfigurationPropertiesBinding
annotation이 달린@Bean
method는 이제 lambda로 구현할 수 있습니다.ApplicationConversionService
는 이제 converter@Bean
method에서 generic type을 감지합니다.CqlOperations
bean은 이제 자동 구성되어CassandraTemplate
에서 내부적으로 사용됩니다.ReactiveCqlOperations
bean은 이제 자동 구성되어ReactiveCassandraTemplate
에서 내부적으로 사용됩니다.ObjectDirectoryMapper
bean은 이제 자동 구성되어LdapTemplate
에서 내부적으로 사용됩니다.management.server.accesslog.prefix
가management.server.{server}.accesslog.prefix
로 이름이 변경되었으며, 여기서{server}
는jetty
,tomcat
또는undertow
일 수 있습니다.- 인증 예외 발생 후 재시도 간의 시간을 구성하기 위한
spring.kafka.listener.auth-exception-retry-interval
속성이 추가되었습니다. - Cloud Native Buildpack 통합을 위한 logging이 개선되었습니다.
- MongoDB protocol을 사용자 정의할 수 있도록 새로운 property
spring.data.mongodb.protocol
이 추가되었습니다. - Logback 및 Log4j2는 이제 console charset을 존중합니다.
- GraphQL의 transport-specific configuration property들이 재구성되었습니다.
spring.graphql.path
는 이제spring.graphql.http.path
이며,spring.graphql.sse.timeout
은spring.graphql.http.sse.timeout
으로 대체되었습니다. - Zipkin의
URLConnectionSender
에 대한 지원이 제거되었습니다. OtlpMetricsProperties.url
의 기본 값이 제거되었습니다.
그러나 Micrometer가 기본 값을 제공하므로 눈에 띄는 변경은 없을 것입니다.- 자동 구성된
JdbcTemplate
은ignoreWarnings
,skipResultsProcess
,skipUndeclaredResults
및resultsMapCaseInsensitive
에 대한 추가 configuration property 들을 사용하여 더 사용자 정의할 수 있습니다. - 대부분의 경우 이제 classpath에
spring-jdbc
없이도DataSource
를 자동 구성할 수 있습니다.
connection pool 없이 내장 데이터베이스를 사용하려면 여전히spring-jdbc
가 필요합니다. - property
server.tomcat.use-apr
의 기본값이 이제never
입니다.
Tomcat의 APR을 사용하려면 속성을when-available
또는always
로 설정하세요. - Spring Integration의
PollerMetadata
를 사용자 정의하기 위한PollerMetadataCustomizer
가 추가되었습니다. - Garbage collector 정보가 actuator process 정보에 추가되었습니다.
- Maven 경고를 제거하기 위해
BuildImage
Maven mojo에서 readonly flag가 제거되었습니다. server.servlet.session.cookie.same-site
또는server.reactive.session.cookie.same-site
를omitted
로 설정하여 session cookie에서SameSite
속성을 생략할 수 있습니다.MeterProvider
bean은 이제OtlpHttpLogRecordExporter
,OtlpHttpSpanExporter
,OtlpGrpcLogRecordExporter
및OtlpGrpcSpanExporter
에 자동으로 구성됩니다.- Spring LDAP의
referral
mode는 새로운spring.ldap.referral
property로 구성할 수 있습니다. OtlpHttpSpanExporterBuilder
및OtlpGrpcSpanExporterBuilder
를 위한 사용자 정의자가 추가되었습니다.- 새로운 property
spring.kafka.consumer.max-poll-interval
을 사용하여 Kafka의 poll invocation의 최대 지연 시간을 구성할 수 있습니다. - 실제로 필요하지 않아서
RECORD_COMPONENT
가@DefaultValue
의 대상에서 제거되었습니다. - 자동 구성된
RestClientSsl
bean은 이제HttpClientProperties
의 구성을 덮어쓰지 않고 그 위에 구축됩니다. RestClientAutoConfiguration
은 이제 virtual thread를 사용하고applicationTaskExecutor
bean을 가진 reactive web application에 적용됩니다.- 자동 구성된
OtlpMeterRegistry
는 이제 제공된 모든OtlpMetricsSender
bean을 적용합니다. - 이제 meter registry 별로 histogram-flavor 및 max-buckets을 설정할 수 있습니다.
- context data가 logging 되지 않거나 다른 위치에 logging 되도록 허용하기 위해
logging.structured.json.context
아래에 추가 property들이 추가되었습니다. - 테스트 실패 시 세부 정보를 출력하지 않으려는 경우
false
로 설정할 수 있는 새로운spring.test.print-condition-evaluation-report
property가 추가되었습니다.
Deprecations in Spring Boot 3.5.0
ConditionalOutcome.inverse(...)
는 유용한 메시지를 생성하지 않으므로 제거 예정으로 지원 중단되었습니다- SignalFX 지원은 Micrometer의 지원 중단 에 따라 지원 중단되었습니다.
org.springframework.boot.autoconfigure.security.servlet.RequestMatcherProvider
는org.springframework.boot.actuate.autoconfigure.security.servlet.RequestMatcherProvider
로 이동하기 위해 지원 중단되었습니다.org.springframework.boot.autoconfigure.security.oauth2.client.ClientsConfiguredCondition
는@org.springframework.boot.autoconfigure.security.oauth2.client.ConditionalOnOAuth2ClientRegistrationProperties
로 대체되어 지원 중단되었습니다.org.springframework.boot.autoconfigure.security.oauth2.resource.IssuerUriCondition
은@org.springframework.boot.autoconfigure.security.oauth2.resource.ConditionalOnIssuerLocationJwtDecoder
로 대체되어 지원 중단되었습니다.org.springframework.boot.autoconfigure.security.oauth2.resource.KeyValueCondition
은@org.springframework.boot.autoconfigure.security.oauth2.resource.ConditionalOnPublicKeyJwtDecoder
로 대체되어 지원 중단되었습니다.org.springframework.boot.devtools.autoconfigure.OnEnabledDevToolsCondition
은@org.springframework.boot.devtools.autoconfigure.ConditionalOnEnabledDevTools
로 대체되어 지원 중단되었습니다.- configuration property
spring.mvc.converters.preferred-json-mapper
는 지원 중단되었습니다.
이는spring.http.converters.preferred-json-mapper
로 대체되었습니다. - configuration property
spring.codec.log-request-details
및spring.codec.max-in-memory-size
는 지원 중단되었습니다.
이들은 각각spring.http.codecs.log-request-details
및spring.http.codecs.max-in-memory-size
로 대체되었습니다. org.springframework.boot.autoconfigure.security.oauth2.client.servlet.OAuth2ClientAutoConfiguration
는org.springframework.boot.autoconfigure.security.oauth2.client.OAuth2ClientAutoConfiguration
로 대체되어 지원 중단되었습니다.org.springframework.boot.logging.LoggingSystemProperties.getDefaultCharset()
는getDefaultConsoleCharset()
또는getDefaultFileCharset()
로 대체되어 지원 중단되었습니다.ThreadPoolTaskSchedulerBuilder
의 multi-parameter 기반 constroctor는 default constructor로 대체되어 지원 중단되었습니다.org.springframework.boot.autoconfigure.condition.ConditionOutcome.inverse(ConditionOutcome)
는 새로운ConditionOutcome
생성으로 대체되어 지원 중단되었습니다.KafkaConnectionDetails...BootstrapServers
method는 chain method 호출 사용으로 대체되어 지원 중단되었습니다.ConnectionDetailsFactories
default constructor는 class loader를 허용하는 버전으로 대체되어 지원 중단되었습니다.OnEnabledDevToolsCondition
은@ConditionalOnEnabledDevTools
annotation으로 대체되어 지원 중단되었습니다.
'Study > Java' 카테고리의 다른 글
[troubleshooting] eclipse Marketplace plugin 설치 불가 문제 (0) | 2025.05.08 |
---|---|
Eclipse(STS)에서 PlantUML을 사용하여 class diagram 보기 (0) | 2025.04.11 |
Playwright 사용해 보기 (0) | 2025.03.29 |
Spring Boot ConfigurationMetaData 사용해 보기 (0) | 2025.03.28 |
JDK 24 New Features (0) | 2025.03.26 |
Copilot4Eclipse 사용해 보기 (0) | 2025.01.28 |
Window 개발 환경에서 https로 Spring Boot Application 개발하기 (1) | 2025.01.04 |
Mybatis에서 custom MapTypeHandler 사용해 보기 (0) | 2024.12.29 |
ApplicationContextRunner에서 Condition Evaluation Report 확인하기 (0) | 2024.12.29 |
Spring Boot 3.4 Release Notes (0) | 2024.12.03 |