๐ Spring Boot 3 ๊ฐ ๊ณง ์ถ์๋ฉ๋๋ค!
์ง๋ 10์ 20์ผ์ Spring Boot 3.0.0 RC1 ์ด ๋ฆด๋ฆฌ์ฆ ๋์์ต๋๋ค. ๊ณต์ ๋ธ๋ก๊ทธ์ ๋ฐ๋ฅด๋ฉด ์ ์ ๋ฒ์ ๋ฆด๋ฆฌ์ฆ๋ 11์ 24์ผ์ ์งํ๋ ๊ฒ์ผ๋ก ๋ณด์ ๋๋ค. ์์ง ์ ์ ๋ฆด๋ฆฌ์ฆ ๋ฒ์ ์ ์๋์ง๋ง ๋ฒ๊ทธ๊ฐ ์์ง ์์ ์ด์ ๋ณ๊ฒฝ์ฌํญ์ ๋ฐ์ํ์ง ์๊ณ ๊ธฐ๋ฅ ์ถ๊ฐ๋ ์์๊ฒ์ด๋ผ๊ณ ๊ณต์ ๋ธ๋ก๊ทธ๋ก ๋ฐํํด์ ์ฌ์ค์ RC1 ๊ธฐ์ค์ผ๋ก ์ ๋ฆฌ๋ ์๋ก์ด ๊ธฐ๋ฅ๋ค์ด Spring Boot 3 ์ ์ถ์๋ ๊ฒ์ผ๋ก ๋ณด์ ๋๋ค. RC1 ๊ธฐ์ค Spring Boot 3 ์ ๋ณ๊ฒฝ์ฌํญ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. โ Java 17 ์ด์์ ์ง์. (Kotlin 1.7+) โ Servlet, JPA ๋ฑ์ ๋ค์์คํ์ด์ค๋ฅผ jakarta ๋ก ๋์ฒดํ๋ค. (์ฆ, package ๋ช ์ด javax.* ์์ jakarta.* ๋ก ๋ณ๊ฒฝ๋๋ค.) โ Tomcat 10.1 , Jetty 11 , Undertow 2.3 ๋ฑ๊ณผ ๊ฐ์ ์ต์ ์น ์๋ฒ์ ํธํ ๊ฐ๋ฅ. โ JDK 19 ์์ ๋์ ๋๋ ๊ฐ์ ์ค๋ ๋(Project Loom)์์ ์ด๊ธฐ ํธํ์ฑ ์ง์. โ GraalVM ๊ธฐ๋ฐ์ Spring Native ๋ฅผ ๊ณต์ ์ง์์ ์์ํ๋ค.(3๋ ๊ฐ์ ์คํ์ ๋ง์น๊ณ ์ถ์ํ๋ค๊ณ ํ๋ค์.) โ Netty 5 ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ Reactor Netty 2 ์ ๋ํ ์กฐ๊ธฐ ์ง์. โ Spring Webflux ์์ Multipart form upload ์คํธ๋ฆฌ๋ฐ์ ์ํ PartEvent API ์ง์. โ HTTP/RSocket Interface Client๋ฅผ ์ ๊ณตํ๋ค. โ Micrometer Observation API ๊ฐ ์๋์ผ๋ก ๊ตฌ์ฑ๋๋ฉฐ, Observability ๊ฐ ๊ณต์ ์ง์์ ์์ํ๋ค. โ HTTP API ์๋ฌ ์ฒ๋ฆฌ๋ฅผ ์ํ RFC 7807 ์คํ์ ์ง์. โ /api/hello ์ /api/hello/ ๋ ๋ณด์์ ์ด์๋ก ๋ ์ด์ ์ผ์นํ์ง ์๋๋ค. โ Logback ๋ฐ Log4j2 ๋ ์ง ๋ฐ ์๊ฐ์ ๊ธฐ๋ณธ๊ฐ ํ์ค์ ISO-8601 ๋ฅผ ๋ฐ๋ฅธ๋ค. โ Deprecated ๋ ๋ชจ๋ ์ฝ๋๊ฐ ์ ๊ฑฐ๋๋ค. Spring Boot 3 ๋ก ๋ง์ด๊ทธ๋ ์ด์ ์ ํ๊ธฐ ์ํด์๋ ๋ค์๊ณผ ๊ฐ์ด ์งํํด์ผ ํ๋ค๊ณ ํฉ๋๋ค. 1. Java 17 ๋ก ์ ๊ทธ๋ ์ด๋. 2. Spring Boot 2.7.x ๋ก ์์ฐจ์ ์ผ๋ก (2.5 -> 2.6 -> 2.7) ์ ๊ทธ๋ ์ด๋. 3. Deprecated ์ฝ๋๋ฅผ ์ฐพ์ (-Werror ์ต์ ) ์ ๊ฑฐ. 4. ๋ ๊ฑฐ์ application.properties ๋ฐ application.yaml ์ ํ์ธ ๋ฐ ๋ณ๊ฒฝ. (use-legacy-processing) 5. AntPathMatcher ๋ฅผ ์ฌ์ฉ์ค์ด๋ผ๋ฉด ์ฑ๋ฅ์ด ๋ ์ข์ PathPatternParser์ผ๋ก ๋ณ๊ฒฝ.(์ด๊ฑด ํ์๋ ์๋๊ณ ์ต์ ์ ๋๋ค.) 6. ํ์ฌ ํ๋ก์ ํธ์์ Jakarta EE 9 ๋ฅผ ํธํํ๋ ๋ฆด๋ฆฌ์ฆ๊ฐ ์๋์ง ํ์ธ. 7. ํ์ฌ ํ๋ก์ ํธ์์ Spring Framework 6 ์ ํธํํ๋์ง ํ์ธ. 8. Spring Boot 3 ์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์ . ์์ธํ ๋ด์ฉ์ ์๋ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์. ๐ Spring Framework 6.x ์ ์๋ก์ด ๊ธฐ๋ฅ https://github.com/spring-projects/spring-framework/wiki/What%27s-New-in-Spring-Framework-6.x/ ๐ Spring Boot 3 ๋ง์ด๊ทธ๋ ์ด์ ์ ์ฒด ๋ด์ฉ https://spring.io/blog/2022/05/24/preparing-for-spring-boot-3-0