Community

๐ŸŽ‰ 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

์•Œ๋ฆผ

์•Œ๋ฆผ์ด ์—†์Šต๋‹ˆ๋‹ค