New Score :0
High Score :0
Run Best
NICE BUSINESS TYPE INDICATOR
3. 급전을 친구에게 빌렸는데 오늘이 돈을 주기로 한날.. 그런데 카드값을 내야하는 날도 오늘인데... 이걸 어쩌나...
4. 우리 회사는 중요한 의사 결정을 할때?
5. 열심히 일한 나를 위한 선물을 주고싶다. 어떤게 좋을까?
6. 은행에서 투자상품을 추천받았다. 어떤걸 가입하지?
7. 회사에서의 나는?
8. 꿈에서 깨어나니 20년 전으로 돌아갔다. 당신이 제일 먼저 하는일은?
9. 내가 인사 담당자라면 신규 입사자 채용 시 제일 중요하게 보는것은?
10. 회사에 정말 싫어하는 동료가 있다면?
11. 가난한 집의 가장이 되었다.. 자녀의 생일 날 선물은?
12. 평소 회사 출근 스타일은?
13.회사 체육대회 하는 날이다. 오늘 뭐하지?
14. 나의 업무 스타일은?
Upgrading from Spring Boot 2.7
이것은 Spring Boot의 주요 릴리스이므로 기존 응용 프로그램을 업그레이드하는 것이 평소보다 조금 더 복잡 할 수 있습니다. 기존 Spring Boot 2.7 애플리케이션을 업그레이드하는 데 도움이 되는 전용 마이그레이션 가이드를 마련 했습니다.
현재 이전 버전의 Spring Boot를 사용 중인 경우 Spring Boot 2.7으로 마이그레이션 하기 전에 Spring Boot 3.0로 업그레이드하는 것이 좋습니다.
New and Noteworthy
Tip.
구성 변경 로그에서 구성 변경 사항에 대한 전체 개요를 확인하십시오.Java 17 Baseline and Java 19 Support
스프링 부트 3.0에는 최소 버전으로 Java 17이 필요합니다. 현재 Java 8 또는 Java 11을 사용 중인 경우 Spring Boot 3.0 애플리케이션을 개발하기 전에 JDK를 업그레이드해야 합니다.
스프링 부트 3.0도 잘 작동하며 JDK 19에서 테스트되었습니다.
GraalVM Baseline and Native Build Tools
스프링 부트에는 Graal 22.3 이상 및 기본 빌드 도구 플러그인 0.9.17 이상이 필요합니다.
Third-party Library Upgrades
스프링 부트 3.0은 스프링 프레임 워크 6을 기반으로하며 필요합니다. Spring Framework 6.0에서 사용할 수있는 새로운 기능에 대해 읽어보십시오.
이 릴리스에서 업그레이드된 다른 Spring 프로젝트는 다음과 같습니다.
Spring Boot 3.0은 모든 종속성에 대해 Java EE에서 Jakarta EE API로 마이그레이션되었습니다. 가능한 경우 다음을 포함하여 Jakarta EE 10 호환 종속성이 선택되었습니다.
- Jakarta Activation 2.1
- Jakarta JMS 3.1
- Jakarta JSON 2.1
- Jakarta JSON Bind 3.0
- Jakarta Mail 2.1
- Jakarta Persistence 3.1
- Jakarta Servlet 6.0
- Jakarta Servlet JSP JSTL 3.0
- Jakarta Transaction 2.0
- Jakarta Validation 3.0
- Jakarta WebSocket 2.1
- Jakarta WS RS 3.1
- Jakarta XML SOAP 3.0
- Jakarta XML WS 4.0
또한 가능한 한 타사 항아리의 안정적인 최신 릴리스로 업그레이드했습니다. 몇 가지 주목할만한 종속성 업그레이드는 다음과 같습니다.
- Couchbase Client 3.4
- Ehcache 3.10
- Elasticsearch Client 8.5
- Flyway 9
- Groovy 4.0
- Hibernate 6.1
- Hibernate Validator 8.0
- Jackson 2.14
- Jersey 3.1
- Jetty 11
- jOOQ 3.16
- Kotlin 1.7.20
- Liquibase 4.13
- Lettuce 6.2
- Log4j 2.18
- Logback 1.4
- Micrometer 1.10
- Micrometer Tracing 1.0
- Neo4j Java Driver 5.2
- Netty 4.1.77.Final
- OkHttp 4.10
- R2DBC 1.0
- Reactor 2022.0
- SLF4J 2.0
- SnakeYAML 1.32
- Tomcat 10
- Thymeleaf 3.1.0.M2
- Undertow 2.2.20.Final
GraalVM Native Image Support
이제 Spring Boot 3.0 애플리케이션을 GraalVM 네이티브 이미지로 변환하여 메모리 및 시작 성능을 크게 향상시킬 수 있습니다. GraalVM 네이티브 이미지 지원은 전체 Spring 포트폴리오에서 수행된 주요 엔지니어링 노력이었습니다.
GraalVM 네이티브 이미지를 시작하려면 업데이트된 스프링 부트 참조 설명서를 참조하세요.
Log4j2 Enhancements
Log4j2 지원이 다음 기능을 제공하는 새로운 확장으로 업데이트되었습니다.
- Profile-specific Configuration
- Environment Properties Lookup
- Log4j2 System Properties
자세한 내용은 업데이트된 설명서를 참조하세요.
Improved @ConstructorBinding Detection
생성자 바인딩 @ConfigurationProperties 사용할 때 클래스에 매개 변수가 있는 단일 생성자가 있는 경우 @ConstructorBinding 주석이 더 이상 필요하지 않습니다. 생성자가 두 개 이상인 경우에도 @ConstructorBinding 사용하여 Spring Boot에 사용할 생성자를 알려야 합니다.
대부분의 사용자에게 이 업데이트된 논리는 더 간단한 @ConfigurationProperties 클래스를 허용합니다. 그러나 @ConfigurationProperties이 있고 Bean을 바인딩하지 않고 생성자에 삽입하려면 이제 @Autowired 주석을 추가해야 합니다.
Micrometer Updates
스프링 부트 3.0은 마이크로미터 1.10에 도입된 새로운 관찰 API를 지원합니다. 새 ObservationRegistry 인터페이스를 사용하여 메트릭과 추적 모두에 대해 단일 API를 제공하는 관찰을 만들 수 있습니다. 스프링 부트는 이제 ObservationRegistry의 인스턴스를 자동으로 구성합니다.
마이크로미터 코어가 클래스 경로에 있는 경우 DefaultMeterObservationHandler가 ObservationRegistry에 등록되며, 이는 중지된 모든 관찰이 타이머로 이어진다는 것을 의미합니다. ObservationPredicate, GlobalObservationConvention 및 ObservationHandler는 ObservationRegistry에 자동으로 등록됩니다. 필요한 경우 ObservationRegistryCustomizer를 사용하여 ObservationRegistry를 추가로 사용자 지정할 수 있습니다.
자세한 내용은 참조 문서의 새로운 '관찰 가능성' 섹션을 참조하세요.
스프링 부트는 이제 마이크로 미터 추적을 자동으로 구성합니다. 여기에는 Brave, OpenTelemetry, Zipkin 및 Wavefront에 대한 지원이 포함됩니다.
마이크로미터 관측 API를 사용할 때 관측을 마치면 Zipkin 또는 Wavefront에 보고된 스팬이 생성됩니다. 추적은 관리 중인 속성을 사용하여 제어할 수 있습니다. Zipkin은 management.zipkin.tracing으로 구성할 수 있으며, Wavefront는 management.wavefront를 사용합니다.
추가해야 하는 다양한 종속성을 포함한 자세한 내용은 참조 설명서의 추적 섹션에 있습니다.
이제 io.micrometer:micrometer-registry-otlp가 클래스 경로에 있을 때 OtlpMeterRegistry 가 자동으로 구성됩니다. 미터 레지스트리는 management.otlp.metrics.export.* 속성을 사용하여 구성할 수 있습니다.
Prometheus Support
마이크로미터 추적 추적기 빈이 있고 프로메테우스가 클래스 경로에 있는 경우 이제 SpanContextSupplier가 자동으로 구성됩니다. 이 공급자는 현재 추적 ID 및 범위 ID를 Prometheus에서 사용할 수 있도록 하여 메트릭을 추적에 연결합니다.
푸시 게이트웨이는 종료 시 PUT을 수행하도록 구성할 수 있습니다. 이렇게 하려면 management.prometheus.metrics.export.pushgateway.shutdown-operation을 put으로 설정합니다. 또한 기존 푸시 설정은 더 이상 사용되지 않으며 이제 post를 대신 사용해야 합니다.
More Flexible Auto-configuration for Spring Data JDBC
스프링 데이터 JDBC에 대한 자동 구성이 이제 더 유연해졌습니다. Spring Data JDBC에 필요한 여러 자동 구성된 Bean은 이제 조건부이며 동일한 유형의 Bean을 정의하여 대체할 수 있습니다. 이제 대체할 수 있는 Bean의 유형은 다음과 같습니다.
- org.springframework.data.jdbc.core.JdbcAggregateTemplate
- org.springframework.data.jdbc.core.convert.DataAccessStrategy
- org.springframework.data.jdbc.core.convert.JdbcConverter
- org.springframework.data.jdbc.core.convert.JdbcCustomConversions
- org.springframework.data.jdbc.core.mapping.JdbcMappingContext
- org.springframework.data.relational.RelationalManagedTypes
- org.springframework.data.relational.core.dialect.Dialect
Enabling Async Acks with Apache Kafka
Kafka와 함께 비동기 acks를 활성화하기 위한 새로운 구성 속성 spring.kafka.listener.async-acks가 추가되었습니다. 비동기 acks를 사용하도록 설정하려면 속성을 true로 설정합니다. 이 속성은 spring.kafka.listener.async-mode가 수동 또는 수동 즉시로 설정된 경우에만 적용됩니다.
Elasticsearch Java Client
새로운 Elasticsearch Java 클라이언트에 대한 자동 구성이 도입되었습니다. 기존 spring.elasticsearch.* 구성 속성을 사용하여 구성할 수 있습니다.
Auto-configuration of JdkClientHttpConnector
Reactor Netty가 없으면 Jetty의 반응형 클라이언트와 Apache HTTP 클라이언트인 JdkClientHttpConnector가 이제 자동으로 구성됩니다. 이렇게 하면 WebClient를 JDK의 HttpClient와 함께 사용할 수 있습니다.
@SpringBootTest with Main Methods
@SpringBootTest 주석은 이제 사용 가능한 경우 검색된 @SpringBootConfiguration 클래스의 main을 사용할 수 있습니다. 즉, main 메서드에서 수행 한 모든 사용자 지정 SpringApplication 구성을 이제 테스트에서 선택할 수 있습니다.
테스트에 main 메서드를 사용하려면 @SpringBootTest의 useMainMethod 특성을 UseMainMethod.ALWAYS 또는 UseMainMethod.WHEN_AVAILABLE로 설정합니다.
자세한 내용은 업데이트된 참조 설명서를 참조하십시오.
Miscellaneous
위에 나열된 변경 사항 외에도 다음과 같은 몇 가지 사소한 조정 및 개선 사항이 있습니다.
- 호스트 이름은 응용 프로그램 시작 중에 더 이상 기록되지 않습니다. 이렇게 하면 시작 시간을 개선하는 데 도움이 되는 네트워크 조회가 방지됩니다.
- Java의 SecurityManager에 대한 지원은 JDK에서 더 이상 사용되지 않는 이후 제거되었습니다.
- 스프링 프레임워크의 CommonsMultipartResolver에 대한 지원은 스프링 프레임워크 6에서 제거된 후 제거되었습니다.
- spring.mvc.ignore 기본 모델 온 리디렉션은 업스트림 스프링 프레임 워크 변경 사항에 맞게 더 이상 사용되지 않습니다.
- WebJars 리소스 처리기 경로 패턴은 spring.mvc.webjars-path-pattern 또는 spring.webflux.webjars-path-pattern을 사용하여 사용자 지정할 수 있습니다.
- Tomcat의 원격 IP 밸브의 신뢰할 수 있는 프록시는 server.tomcat.remoteip.trusted-proxies를 사용하여 구성할 수 있습니다.
- Bean 유효성 검증 구성은 이제 ValidationConfigurationCustomizer Bean을 정의하여 사용자 정의할 수 있습니다.
- Log4j2의 Log4jBridgeHandler는 이제 SLF4J를 통해 라우팅하는 대신 JUL 기반 로깅을 Log2j4로 라우팅하는 데 사용됩니다.
- MeterBinder 인터페이스를 구현하는 Bean은 이제 모든 싱글톤 빈이 초기화된 후에만 미터 레지스트리에 바인딩됩니다.
- Brave 및 OpenTelemetry용 SpanCustomizer 빈이 이제 자동 구성됩니다.
- Micrometer의 JvmCompilationMetrics는 이제 자동으로 구성됩니다.
- 이제 DiskSpaceHealthIndicator는 로그 메시지와 상태 세부 정보에 해당 경로를 포함합니다.
- 이제 래핑된 DataSource에서 파생될 수 있습니다.
- 이제 spring.data.mongodb.additional-hosts 속성을 사용하여 MongoDB에 대해 여러 호스트를 구성할 수 있습니다.
- Elasticsearch의 socketKeepAlive 속성은 spring.elasticsearch.socket-keep-alive 속성을 사용하여 구성할 수 있습니다.
- spring-rabbit-stream을 사용할 때, 이제 spring.rabbitmq.listener.type이 스트림인지 여부에 관계없이 RabbitStreamTemplate 및 환경이 자동으로 구성됩니다.
- 기존 Kafka 주제는 spring.kafka.admin.modify-topic-configs를 사용하여 수정할 수 있습니다.
- WebDriverScope 및 WebDriverTestExecutionListener는 사용자 지정 테스트 설정에서 WebDriver를 쉽게 사용할 수 있도록 공개되었습니다.
Deprecations in Spring Boot 3.0
- @ConstructorBinding org.springframework.boot.context.properties 패키지에서 org.springframework.boot.context.properties.bind로 재배치되었습니다.
- JsonMixinModule 검색 기반 생성자는 더 이상 사용되지 않습니다.
- ClientHttpRequestFactorySupplier는 ClientHttpRequestFactories로 대체되어야 합니다.
- 쿠키 주석 속성은 더 이상 지원되지 않습니다.
- RestTemplateExchangeTagsProvider, WebClientExchangeTagsProvider, WebFluxTagsProvider, WebMvcTagsProvider 및 관련 클래스는 Observationconvention에 해당하는 클래스로 대체되었습니다.
- 기본 클래스의 non-args 생성자 @Configuration 더 이상 사용되지 않습니다.
- DefaultTestExecutionListenersPostProcessor 및 SpringBootDependencyInjectionTestExecutionListener는 Spring Framework의 ApplicationContextFailureProcessor를 위해 더 이상 사용되지 않습니다.
- management.metrics.export.<product> 속성은 더 이상 사용되지 않으며 대체는 management.<product>.metrics.export입니다.
- post에 찬성하여 management.prometheus.metrics.export.pushgateway.shutdown-operation의 푸시 설정.
- @AutoConfigureMetrics @AutoConfigureObservability 위해 더 이상 사용되지 않습니다.