일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 스프링 세션
- 스프링
- 레디스
- swagger-ui
- oauth2
- 예외처리
- rest api
- spring
- spring security and angularjs
- 스웨거
- spring framwork
- controlleradvice
- 앵귤러
- api documentation
- Spring Security
- angular
- spring session
- spring security oauth2
- spring boot
- 스프링 시큐리티와 앵귤러 js
- Exception Handling
- AUthorization
- Spring Framework
- 스프링부트
- api 문서화
- 스프링 부트
- Authentication
- angularjs
- 스프링 시큐리티
- 앵귤러JS
- Today
- Total
스프링부트는 사랑입니다
스프링 부트 3.1 릴리스 노트 본문
Upgrading from Spring Boot 3.0
RestTemplate와 함께 Apache HttpClient 4에 대한 지원은 Spring Framework 6에서 제거되었으며, Apache HttpClient 5를 선호합니다. Spring Boot 3.0은 HttpClient 4와 5 모두에 대한 의존성 관리를 포함합니다. HttpClient 4를 계속 사용하는 애플리케이션은 RestTemplate 사용 시 진단하기 어려운 오류가 발생할 수 있습니다.
Spring Boot 3.1은 사용자가 HttpClient 5로 이동하도록 권장하기 위해 HttpClient 4에 대한 의존성 관리를 제거합니다.
서블릿 및 필터 등록
ServletRegistrationBean 및 FilterRegistrationBean 클래스는 이제 등록 실패 시 경고를 기록하는 대신 IllegalStateException을 발생시킵니다. 이전 동작이 필요하다면, 등록 빈에서 setIgnoreRegistrationFailure(true)를 호출해야 합니다.
Git Commit ID Maven Plugin Version Property
Git Commit ID Maven 플러그인 버전 속성
io.github.git-commit-id:git-commit-id-maven-plugin의 버전을 재정의하는 데 사용되는 속성이 해당 아티팩트 이름에 맞게 업데이트되었습니다. 이 변경에 적응하려면 pom.xml에서 git-commit-id-plugin.version을 git-commit-id-maven-plugin.version으로 교체하십시오.
Spring Kafka Retry Topic Auto-configuration
자동 구성된 재시도 가능한 주제 구성(spring.kafka.retry.topic.enabled: true)과 함께 Apache Kafka를 사용할 때, 최대 지연 시간이 있는 지수 백오프를 사용하면 최대 지연 수준에서의 모든 재시도가 이제 동일한 주제로 전송됩니다. 이전에는 최대 지연 시간을 초과하더라도 각 재시도에 대해 별도의 주제가 사용되었습니다.
예를 들어, 최대 재시도 시도가 5회, 지연이 1초, 승수가 2, 최대 지연이 3초인 경우, 초기 실패 후 재시도는 1초, 2초, 3초, 3초로 수행됩니다. 이전 버전의 Spring Boot에서는 프레임워크가 6개의 주제를 생성했습니다: someTopic, someTopic-retry-0, someTopic-retry-1, someTopic-retry-2, someTopic-retry-3, 그리고 someTopic-dlt. 이 변경으로 인해 someTopic-retry-3 주제는 생성되지 않으며, 대신 모든 3초 재시도는 someTopic-retry-2에 있게 됩니다. 이전 Spring Boot 버전에서 마이그레이션한 후, 모든 레코드가 소비된 후에는 someTopic-retry-3 주제를 안전하게 삭제할 수 있습니다.
Spring Boot의 의존성 관리에는 이제 Testcontainers가 포함됩니다. 필요에 따라 Spring Boot에서 관리하는 버전은 testcontainers.version 속성을 사용하여 재정의할 수 있습니다.
Hibernate 6.2
Spring Boot 3.1은 Hibernate 6.2로 업그레이드됩니다. 애플리케이션에 미칠 수 있는 영향에 대해 알아보려면 Hibernate 6.2 마이그레이션 가이드를 참조하십시오.
Jackson 2.15
Spring Boot 3.1은 Jackson 2.15로 업그레이드됩니다. 애플리케이션에 미칠 수 있는 영향에 대해 알아보려면 Jackson 위키를 참조하십시오.
2.15의 주요 변경 사항 중 하나는 처리 한도의 도입입니다. 이러한 제약 조건을 조정하려면 다음과 유사한 Jackson2ObjectMapperBuilderCustomizer를 정의하십시오:
@Bean
Jackson2ObjectMapperBuilderCustomizer customStreamReadConstraints() {
return (builder) -> builder.postConfigurer((objectMapper) -> objectMapper.getFactory()
.setStreamReadConstraints(StreamReadConstraints.builder().maxNestingDepth(2000).build()));
}
Spring Boot 3.1은 Mockito 5, 특히 5.3으로 업그레이드됩니다. Mockito 5.x 라인의 주요 변경 사항에 대해 알아보려면 Mockito 릴리스 노트를 참조하십시오.
헬스 그룹의 구성된 멤버십은 이제 시작 시 검증됩니다. 존재하지 않는 헬스 지표가 포함되거나 제외된 경우 시작이 실패합니다. 이 검증은 비활성화할 수 있으며, 이전 버전의 동작을 복원하려면 management.endpoint.health.validate-group-membership을 false로 설정하십시오.
spring-boot-starter-parent는 이제 maven.compiler.source 및 maven.compiler.target 대신 Java 버전을 구성하기 위해 maven.compiler.release를 사용합니다. 소스 및 타겟 속성은 제거되었습니다. 빌드의 어딘가에서 이를 사용하고 있다면, maven.compiler.release로 마이그레이션하십시오.
Service Connections
새로운 서비스 연결 개념이 도입되었습니다. 이러한 연결은 ConnectionDetails 빈으로 애플리케이션에 표현됩니다. 이 빈은 외부 서비스와의 연결을 설정하는 데 필요한 세부정보를 제공합니다. Spring Boot의 자동 구성은 ConnectionDetails 빈을 사용할 수 있도록 업데이트되었습니다. 이러한 빈이 사용 가능한 경우, 연결 관련 구성 속성보다 우선하게 됩니다. 연결 풀의 크기 및 동작을 제어하는 속성과 같은 연결 자체와 관련되지 않은 구성 속성은 여전히 사용됩니다.
이 저수준 기능은 ConnectionDetails 빈을 정의하여 서비스 연결을 자동 구성하는 다른 고수준 기능의 빌딩 블록으로 의도되었습니다.
개발 시간에 외부 서비스를 관리하기 위해 Testcontainers를 사용하는 지원이 도입되었습니다.
새로운 Maven 목표(spring-boot
) 및 Gradle 작업(bootTestRun)을 사용하여 개발 시간에 Testcontainers를 사용할 때 테스트 메인 메소드를 통해 애플리케이션을 시작할 수 있습니다.
Testcontainers 컨테이너 인스턴스를 정적 필드로 선언하는 클래스는 새로운 @ImportTestcontainers 주석을 사용하여 가져올 수 있습니다. 추가 세부정보는 참조 문서를 참조하십시오.
Testcontainers 생명 주기의 관리가 개선되어 컨테이너가 먼저 초기화되고 나중에 파괴되도록 보장됩니다. 재사용 가능한 컨테이너에 대한 지원도 개선되었습니다.
컨테이너 @Bean 메서드에서 속성을 기여하기 위해 DynamicPropertyRegistry를 주입할 수 있게 되었습니다. 이는 테스트에서 사용할 수 있는 @DynamicPropertySource와 유사한 방식으로 작동합니다. 추가 세부정보는 참조 문서를 참조하십시오.
Testcontainers를 사용할 때, @DynamicPropertySource는 컨테이너의 설정을 기반으로 애플리케이션 속성을 구성하는 데 일반적으로 사용됩니다:
@Container
static GenericContainer redis = new GenericContainer(DockerImageName.parse("redis").withTag("4.0.14"));
// …
@DynamicPropertySource
static void redisProperties(DynamicPropertyRegistry registry) {
registry.add("spring.data.redis.host", redis::getHost);
registry.add("spring.data.redis.port", redis::getFirstMappedPort);
}
이제 다음과 같이 간소화할 수 있습니다:
@Container
@ServiceConnection
static GenericContainer redis = new GenericContainer(DockerImageName.parse("redis").withTag("4.0.14"));
여기서 @ServiceConnection은 해당 컨테이너가 Redis 연결 세부정보의 출처로 사용되어야 함을 나타냅니다. @ServiceConnection 주석을 제공하는 spring-boot-testcontainers 모듈은 Testcontainers API를 사용하여 이를 정의하고 구성할 수 있도록 하면서 컨테이너에서 이러한 세부정보를 추출합니다.
현재 @ServiceConnection 주석으로 지원되는 서비스의 전체 목록은 참조 문서를 참조하십시오.
새로운 모듈인 spring-boot-docker-compose가 Docker Compose와의 통합을 제공합니다. 애플리케이션이 시작될 때, Docker Compose 통합은 현재 작업 디렉터리에서 구성 파일을 찾습니다. 지원되는 파일은 다음과 같습니다:
- compose.yaml
- compose.yml
- docker-compose.yaml
- docker-compose.yml
비표준 파일을 사용하려면 spring.docker.compose.file 속성을 설정하십시오.
기본적으로 구성 파일에 선언된 서비스는 docker compose up을 사용하여 시작되며, 해당 서비스의 연결 세부정보 빈이 애플리케이션 컨텍스트에 추가되어 추가 구성 없이 서비스를 사용할 수 있게 됩니다. 애플리케이션이 중지될 때, 서비스는 docker compose down을 사용하여 중지됩니다. 이 생명 주기 관리 및 서비스 시작과 중지를 위한 명령은 spring.docker.compose.lifecycle-management, spring.docker.compose.startup.command, spring.docker.compose.shutdown.command 구성 속성을 사용하여 사용자 지정할 수 있습니다.
추가 세부정보 및 현재 지원되는 서비스 목록은 참조 문서를 참조하십시오.
SSL trust material such as Java KeyStores and PEM-encoded certificates can now be configured using properties and applied to connections of various types such as embedded web servers, data services, RestTemplate and WebClient in a more consistent manner.
Please refer to the reference documentation for more information.
Java KeyStores 및 PEM 인코딩된 인증서와 같은 SSL 신뢰 자료를 이제 속성을 사용하여 구성하고 내장 웹 서버, 데이터 서비스, RestTemplate 및 WebClient와 같은 다양한 유형의 연결에 적용할 수 있습니다.
spring-boot:build-image Maven 목표와 bootBuildImage Gradle 작업에는 생성된 이미지 메타데이터의 Created 필드 값을 사용자 지정 날짜로 설정하거나 현재 날짜 및 시간을 사용하기 위해 now로 설정할 수 있는 createdDate 구성 옵션이 추가되었습니다. 추가 정보는 Gradle 및 Maven 플러그인 문서를 참조하십시오.
컨트롤러 또는 @ControllerAdvice에서 선언된 @GraphQlExceptionHandler 메서드는 이제 Spring for GraphQL에 의해 컨트롤러 메서드 호출을 위해 기본적으로 지원됩니다. 또한 Spring Boot는 GraphQlSource의 구성으로 QueryDslDataFetcher, QueryByExampleDataFetcher 등과 같은 다른(비컨트롤러) DataFetcher 구현에 대한 @ControllerAdvice 예외 처리를 자동 구성합니다.
Spring Data가 클래스 경로에 있는 경우, Spring for GraphQL은 이제 페이지네이션 및 정렬을 지원하도록 자동 구성됩니다.
io.opentelemetry:opentelemetry-exporter-otlp가 클래스 경로에 있으면 OtlpHttpSpanExporter가 자동 구성됩니다. 내보내기의 구성은 management.otlp.tracing.* 구성 속성을 사용하여 사용자 지정할 수 있습니다.
Wavefront를 사용하고 RED 메트릭에 대한 span 태그를 사용자 지정하려는 경우, 이제 이를 가능하게 하는 management.wavefront.trace-derived-custom-tag-keys라는 새로운 속성이 추가되었습니다. 자세한 내용은 #34194를 참조하십시오.
Logback 또는 Log4j2를 사용하는 경우, 이제 콘솔 로그와 파일 로그에 대해 서로 다른 로그 수준을 설정할 수 있는 옵션이 제공됩니다. 이는 logging.threshold.console 및 logging.threshold.file 구성 속성을 사용하여 설정할 수 있습니다.
Tomcat 또는 Jetty를 사용하는 경우 최대 HTTP 응답 헤더 크기를 제한할 수 있습니다. Tomcat의 경우 server.tomcat.max-http-response-header-size 속성을 사용하고, Jetty의 경우 server.jetty.max-http-response-header-size 속성을 사용합니다. 기본적으로 응답 헤더는 8kb로 제한됩니다.
Spring Boot 3.0에서 제거된 ActiveMQ 클라이언트의 자동 구성 지원이 복원되었습니다. ActiveMQ의 브로커는 JMS 3.0을 지원하지 않기 때문에 내장 ActiveMQ 브로커에 대한 지원은 복원되지 않았습니다.
Spring Boot 3.1.0은 여러 Spring 프로젝트의 새로운 버전으로 이동합니다:
많은 서드파티 의존성도 업데이트되었으며, 그 중 더 주목할 만한 것들은 다음과 같습니다:
- Couchbase Java Client 3.4.6
- Elasticsearch Client 8.7
- Hibernate 6.2
- GraphQL Java 20.1
- Jackson 2.15.0
- Kafka 3.4.0
- Kotlin 1.8.21
- Liquibase 4.20
- Micrometer 1.11.0
- Micrometer Tracing 1.1.1
- Mockito 5.3
- Native Build Tools 0.9.22
- Neo4j Java Driver 5.8.0
- OpenTelemetry 1.24.0
- Rabbit AMQP Client 5.17.0
- Reactor BOM 2022.0.7
- Testcontainers 1.18
- Undertow 2.3.6.Final
-
- Spring Kafka ContainerCustomizer 빈이 이제 자동 구성된 KafkaListenerContainerFactory에 적용됩니다.
- OTLP 레지스트리에 헤더를 전송하는 것을 지원하기 위해 management.otlp.metrics.export.headers 속성이 추가되었습니다.
- AOT 처리에서 JoranConfigurators 빈을 사용할 수 있게 되었습니다.
- spring.kafka.admin에 추가적인 close-timeout, operation-timeout, auto-startup 및 auto-create 속성이 추가되었습니다.
- BatchInterceptor 빈이 이제 자동 구성된 ConcurrentKafkaListenerContainerFactory에 적용됩니다.
- Nomad가 인식된 CloudPlatform 값 목록에 추가되었습니다.
- spring.jmx에 대한 registration-policy 속성을 지정할 수 있게 되었습니다.
- SanitizableData에 withSanitizedValue 유틸리티 메서드가 추가되었습니다.
- RabbitTemplateCustomizer가 도입되었습니다. 이 유형의 빈은 자동 구성된 RabbitTemplate를 사용자 정의합니다.
- CNB Platform API 0.11이 이제 지원됩니다.
- build-info 목표는 -Dspring-boot.build-info.skip을 설정하여 건너뛸 수 있습니다.
- Micrometer의 OtlpMeterRegistry에 대한 집계 시간 구성 지원.
- Log4j2와 Logback에서 추가 색상 지원.
- R2DBC MySQL 드라이버(io.asyncer)에 대한 의존성 관리가 추가되었습니다.
- R2DBC MariaDB 드라이버(org.mariadb)에 대한 의존성 관리가 추가되었습니다.
- OpenTelemetry를 사용할 때 자동 구성된 SdkTracerProvider를 생성하는 데 사용되는 SdkTracerProviderBuilderBuilder를 정의하여 사용자 정의할 수 있습니다.
- MockServerRestTemplateCustomizer는 이제 새로운 setBufferContent 메서드를 통해 콘텐츠 버퍼링을 활성화하는 것을 지원합니다.
- Spring Batch가 자동 구성될 때 사용하는 변환 서비스를 BatchConversionServiceCustomizer 빈을 정의하여 사용자 정의할 수 있습니다.
- JWK 세트 URI에 대한 JWT 디코더를 생성하는 데 사용되는 빌더를 JwkSetUriReactiveJwtDecoderBuilderCustomizer 또는 JwkSetUriJwtDecoderBuilderCustomizer 빈을 정의하여 사용자 정의할 수 있습니다.
- io.r2dbc에 대한 의존성 관리가 복원되었습니다.
- Logback의 루트 로그 수준이 가능한 한 일찍 INFO로 기본 설정됩니다.
- 기본적으로 Docker Compose는 이제 down이 아닌 stop을 사용하여 중지됩니다.
- The spring.kafka.streams.cache-max-size-buffering has been deprecated in favor of spring.kafka.streams.state-store-cache-max-size.
- MongoPropertiesClientSettingsBuilderCustomizer in favor of StandardMongoClientSettingsBuilderCustomizer
- org.springframework.boot.autoconfigure.security.oauth2.client.OAuth2ClientPropertiesRegistrationAdapter in favor of org.springframework.boot.autoconfigure.security.oauth2.client.OAuth2ClientPropertiesMapper.
- org.springframework.boot.web.server.SslStoreProvider has been deprecated in favor of SSL bundles.
- spring.kafka.streams.cache-max-size-buffering은 spring.kafka.streams.state-store-cache-max-size로 대체되었습니다.
- MongoPropertiesClientSettingsBuilderCustomizer는 StandardMongoClientSettingsBuilderCustomizer로 대체되었습니다.
- org.springframework.boot.autoconfigure.security.oauth2.client.OAuth2ClientPropertiesRegistrationAdapter는 org.springframework.boot.autoconfigure.security.oauth2.client.OAuth2ClientPropertiesMapper로 대체되었습니다.
- org.springframework.boot.web.server.SslStoreProvider는 SSL 번들로 대체되었습니다.
'ReleaseNotes' 카테고리의 다른 글
스프링 부트 3.3 릴리스 노트 (0) | 2024.10.26 |
---|---|
스프링 부트 3.2 릴리스 노트 (0) | 2024.10.23 |
스프링 부트 3.0 릴리즈 노트 (0) | 2024.10.18 |
스프링 부트 1.5 릴리즈 노트 (0) | 2017.07.21 |
스프링 부트 1.4 릴리즈 노트 (0) | 2016.08.06 |