반응형
Spring Boot 2.x -> 3.0 차이
- 최소 요구사항 변경 (M4 기준)
- Gradle 7.5
- Groovy 4.0
- Jakarta EE 9
- Java 17
- Kotlin 1.6
- Hibernate 6.1
- Spring Framework 6
- AOT maven, gradle 플러그인 제공
- native 지원 기능 확대
spring 3.0 지원 라이브러리
- Spring AMQP 3.0.
- Spring Batch 5.0.
- Spring Data 2022.0.
- Spring GraphQL 1.1.
- Spring HATEOAS 2.0.
- Spring Integration 6.0.
- Spring Kafka 3.0.
- Spring LDAP 3.0.
- Spring REST Docs 3.0.
- Spring Retry 2.0.
- Spring Security 6.0 (see also what’s new).
- Spring Session 3.0
- Spring 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
Spring의 AOT란? (Ahead Of Time)
Spring AOT 엔진은 빌드 시 스프링 애플리케이션을 분석하고 최적화하는 도구입니다. 또한 AOT 엔진은 GraalVM Native Configuration이 필요로 하는 reflection configuration을 생성해줍니다. 이것은 Spring native 실행 파일로 컴파일 하는데 사용되고 이후에 애플리케이션의 시작 시간과 메모리 사용량을 줄일 수 있게 됩니다.
Spring Boot 3.0 AOT
Spring Boot 3.0 AOT 부분 확대
위 그림에서 보면 AOT가 Spring Boot 환경에서 하는 일들과 순서를 알 수 있습니다. 간단하게 얘기하자면 Bytecode를 분석하고 최적화해서 좀 더 실행하기에 빠르고 메모리적으로 효율적인 코드를 만듭니다.
(+ spring의 native-image는 JVM에서 실행되는 파일에 비해 빌드 시간은 길고 시작시간이 짧고 메모리는 적게 사용하게 된다.)
AOT 적용 효과
- 런타임시 Spring 인프라를 적게 사용
- 런타임 시 검증할 조건 수 감소
- 리플렉션을 줄이고 프로그래밍적 Bean 등록 방식 사용
제일 메이저한 변화는 java17 이다. 또한 R2DBC 지원도 눈에 띈다.
참고문헌
https://www.baeldung.com/spring-boot-3-spring-6-new
https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0-Release-Notes - github release note (자세한 버젼 정보)
반응형
'Spring > spring boot 및 기타' 카테고리의 다른 글
spring boot 3 r2dbc 설정(mysql) (0) | 2023.06.23 |
---|---|
spring netty thread sleep, webflux 에서 sleep 어떻게 하는게 나을까 (0) | 2023.06.14 |
[spring boot] 스프링 부트 2.1 변경 내역 (0) | 2021.08.31 |
[spring] Mybatis batch upsert 하는 방법(mysql) (0) | 2021.08.11 |
[Spring] multi datasource 동적으로 사용 - AbstractRoutingDataSource (0) | 2021.08.03 |