youtube.com/@coffeesoftware
Spring Boot3 변경점
Oracle이 대응을 멈춰버리면서 open source에 commit 을 할 수가 없어짐. JCP
openSource로 바꾸기로 했지만 수정사항이 생기면 다른 패키지로 만들어야 한다고 함; Oracle에서
그래서 Spring Boot2에서 Spring Boot3 로 바뀌면서 패키지가 javax.servllet 에서 jarkarta.servlet으로 바뀜
Java EE ⇒ Jarkarta EE
spring boot-dev-tools
- 새로운기능 : TestContainers
SpringBoot 3.1 에서 지원되는 기능으로, 컨테이너를 코드를 띄울 수 있음

- @RestartScope 를 붙이면 매번 새로 끄고 키지를 않음
ErrorHandling
ProblemDetail API Error 를 보여주는 standrad. RFC 7807
Metrics
micrometer.io (많은 기술들에 대해 추상화를 진행해 놓음, metrics, distributed tracing)
spring-boot-starter-actuator
- heapdump, threaddump, metrics, mappings 등 유용한 기본 api 를 지원해줌
- 이거 통해서 운영중인 애플리케이션의 로그 레벨도 바꿀 수 있음
Observation.createNotStarted(
docker 지원
buildpacks.io 에서 코드로 짠 프로그램을 docker image로 만들어줌(Dockerfile 작성할 필요가 없다)
./gradelw buildBootImage
JIT vs AOT
JIT(Just In Time), AOT(Ahead of Time)
JIT에서는
- reflection, serialization, jni, proxies(InvoacationHandler), resource loading 등을 동적으로 함
AOT 엔진에서는 compile time에 모든 것들을 다 해줌
./gradlew nativeCompile
(좀 오래 걸림)graalVM 의 기능 사용하면 사용하는 ram 도 100MB밖에 안됨. 많이 적음
Lambda 같은 곳에서 Spring 사용하기 위해서
promising for the immediate startup of Spring applications on the JVM
- Spring Cloud Function
- CRaC - Instantly start Java apps at optimal speed.
Spring CloudGateway
[Spring Cloud Gateway] 프로젝트 생성 및 라우팅 기능
@Configuration public class RouteLocatorConfig { @Bean public RouteLocator routeLocator(RouteLocatorBuilder builder) { return builder .routes() .route("devsky-api-01", p -> p.path("/api01/**") .uri("http://localhost:8081")) .route("devsky-api-02", p -> p.path("/api02/**") .uri("http://localhost:8082")) .build(); } }
- gateway를 통해 retry, circuitBreaker, jsonToGrpc, rateLimit등을 지정할 수 있음
- security, load balancing, routing, 등의 작업을 추가해줄 수 있음
HttpInterface in SpringBoot 3
[ Baeldung ] Http Interface in Spring 6
GraphQL
@SchemaMapping
참고 링크Reactor
Mono, Flux
- Grral VM 을 이용해서 더 가볍게 띄울 수 있음
- Project CRaC
- Virtual Thread 지원
- GraphQL