SpringBoot ๋ฒ„์ „์„ ์—…๊ทธ๋ ˆ์ด๋“œ ํ•ด์•ผํ•  ์ผ์ด ์ƒ๊ฒจ์„œ 2.3 ๋ฒ„์ „์„ 2.5 ๋ฒ„์ „์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•œ ๊ฒฝํ—˜๋‹ด์„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ธ์ƒ ์ฒ˜์Œ์œผ๋กœ ํ•ด๋ณด๋Š” ๋ ˆ๊ฑฐ์‹œ ์‹œ์Šคํ…œ์˜ ํ”„๋ ˆ์ž„์›Œํฌ ์—…๊ทธ๋ ˆ์ด๋“œ ์ž‘์—…์ด์—ˆ์Šต๋‹ˆ๋‹ค.

๋Œ€๋ถ€๋ถ„์€ ์‹ ๊ทœ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค๊ฑฐ๋‚˜ deprecate ๋œ ์ƒํƒœ๋กœ ์œ ์ง€ํ•˜๋Š” ์ •๋„์˜€์ฃ .

๊ทธ๋ž˜๋„ ํ•ด๋ณด๊ณ  ์‹ถ์—ˆ๋˜ ๋ถ€๋ถ„์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์—…๋ฌด๊ฐ€ ๋งŽ์ด ์ง€๋ฃจํ•ด์ง„๊ฒƒ๋„ ํ•œ ๋ชซ ํ–ˆ์ฃ .

์ €๋Š” ์ฃผ๊ธฐ์ ์œผ๋กœ ๋ฐ˜๊ธฐ์— ํ•œ๋ฒˆ์ •๋„๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์—…๊ทธ๋ ˆ์ด๋“œ ์ž‘์—…์„ ์ง„ํ–‰ํ•ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ

์ €ํฌ ๊ฐœ๋ฐœํŒ€์€ ์ด์ƒํ•˜๊ฒŒ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์—…๊ทธ๋ ˆ์ด๋“œ ์ž‘์—…์„ ์•ˆํ•ฉ๋‹ˆ๋‹ค. 

๊ทธ๋Ÿฐ๋ฐ ๊ฐ‘์ž๊ธฐ ํ”„๋ ˆ์ž„์›Œํฌ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ํ•˜๋ ค๋‹ˆ dependency ๊ฐ€ ๋งŽ์ด ๊ฑธ๋ ค์žˆ์„๊ฑฐ๋ผ ์˜ˆ์ƒํ–ˆ์ฃ .

 

์šฐ์„  2.3 -> 2.4 ๋กœ ์˜ฌ๋ผ๊ฐ€๋ฉด์„œ ์–ด๋–ค ๋ถ€๋ถ„์— ๋ณ€ํ™”๊ฐ€ ์ƒ๊ฒผ๋Š”์ง€๋ฅผ ํ™•์ธํ•˜๊ณ  ๋Œ€์‘ํ•˜๊ณ ,

2.4 -> 2.5 ์—์„œ๋Š” ์–ด๋–ค ๋ณ€ํ™”๊ฐ€ ์žˆ์—ˆ๋Š”์ง€ ํ™•์ธํ•˜์—ฌ ๋Œ€์‘ํ•˜๋ฉด ๋ ๊ฑฐ๋ผ ์ƒ๊ฐํ–ˆ๊ณ  

์•„๋ž˜ 2๊ฐœ์˜ spring boot release note ๋ฅผ ํ•˜๋‚˜ํ•˜๋‚˜ ์‚ดํŽด๋ดค์Šต๋‹ˆ๋‹ค.

2.3 -> 2.4 ์—์„œ ๋ณ€๊ฒฝ๋œ ๋ถ€๋ถ„

  • JUnit 5โ€™s Vintage Engine Removed from spring-boot-starter-test
  • Config File Processing (application properties and YAML files)
  • Config Data Imports
  • Embedded database detection
  • User-defined MongoClientSettings no longer customized
  • Logback Configuration Properties
  • Default Servlet Registration
  • HTTP traces no longer include cookie headers by default
  • Undertow Path on Forward
  • Neo4j
  • Hazelcast 4
  • Elasticsearch RestClient
  • R2DBC
  • Flyway
  • Removal of Plugin Management for Flatten Maven Plugin
  • Version management for exec-maven-plugin
  • Spring Boot Gradle Plugin
  • Metrics export in integration tests
  • Deprecations from Spring Boot 2.2 and 2.3

2.4 -> 2.5 ์—์„œ ๋ณ€๊ฒฝ๋œ ๋ถ€๋ถ„

  • SQL Script DataSource Initialization
  • Flyway and Liquibase JDBC URLs
  • Spring Data JPA
  • Spring Data Solr
  • Secure Info Endpoint
  • Task Scheduling Harmonization with Spring Integration
  • Default Expression Language (EL) Implementation
  • Messages in the Default Error View
  • Logging Shutdown Hooks
  • Gradle Default jar and war Tasks
  • Cassandra Throttling Properties
  • Customizing jOOQโ€™s DefaultConfiguration
  • Groovy 3
  • Minimum Requirements Changes
  • Hibernate Validator 6.2

์œ„์— ๋‚˜์˜จ ๋‚ด์šฉ ์ด์™ธ์—๋„ ์—…๊ทธ๋ ˆ์ด๋“œ ๋˜๋ฉด์„œ deprecated ๋˜๋Š” ๊ฒƒ๋“ค์— ๋Œ€ํ•œ ๋ถ€๋ถ„๋“ค, ๊ทธ๋ฆฌ๊ณ  ์ƒˆ๋กœ ์ถ”๊ฐ€ ๋œ ๋ถ€๋ถ„๋“ค์— ๋Œ€ํ•œ ์„ค๋ช…์„ ํ•˜๋‚˜ํ•˜๋‚˜ ์ฝ์–ด๋ณด๊ณ  ํ˜„์žฌ ๋‚ด๊ฐ€ ๋‹ด๋‹นํ•˜๋Š” ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ๋“ค๊ณผ ์—ฐ๊ด€๋œ ๊ฒƒ๋“ค์„ ๋ชจ๋‘ ์ฝ์–ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  spring boot ๋ฒ„์ „์„ ๋ณ€๊ฒฝํ•œ ๋’ค ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๋ถ€๋ถ„์€ ์—†๋Š”์ง€ ๋ฐฐํฌ๋Š” ์ž˜ ๋˜๋Š”์ง€๋ฅผ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.

boot ์—…๊ทธ๋ ˆ์ด๋“œ ์ž‘์—…ํ•˜๋ฉด์„œ ๋ณ€๊ฒฝํ–ˆ๋˜ ๋ถ€๋ถ„์€ ์•„๋ž˜ ๋‚ด์šฉ๋“ค์ด์—ˆ์Šต๋‹ˆ๋‹ค.

  • spring.config.use-legacy-processing = true ์„ค์ •์„ ์ถ”๊ฐ€
  • fasterxml.jackson.databind.PropertyNamingStrategy -> PropertyNamingStrategies ํด๋ž˜์Šค ๋ณ€๊ฒฝ
  • third-party dependency ๋“ค ์ค‘์—์„œ ์—…๊ทธ๋ ˆ์ด๋“œ๊ฐ€ ํ•„์š”ํ•œ ๊ฒƒ๋“ค ํ™•์ธ ๋ฐ ์—…๊ทธ๋ ˆ์ด๋“œ
  • gradle ๋ฒ„์ „ ์—…๊ทธ๋ ˆ์ด๋“œ 6.7 -> 6.9

์ž‘์—… ๋‚ด์šฉ๋งŒ๋ณด๋ฉด ์ง„์งœ ๋ณ„๊ฑฐ ์•„๋‹ˆ์—ˆ๋˜ ์ž‘์—…์œผ๋กœ ๋ณด์ด๋„ค์š”. ์ž‘์—…์‹œ๊ฐ„๋ณด๋‹ค ๋ฌธ์„œ ์ฝ์–ด๋ณด๋Š” ์‹œ๊ฐ„์ด ๋” ์˜ค๋ž˜ ๊ฑธ๋ ธ๋˜๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋งํฌ๋ฅผ ํƒ€๊ณ ํƒ€๊ณ  ๋“ค์–ด๊ฐ€์•ผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๋“ค์ด ๋งŽ๋‹ค๋ณด๋‹ˆ..

์•„๋ฌดํŠผ ๋กœ์ปฌํ™˜๊ฒฝ์—์„œ ์ž˜ ๋Œ์•„๊ฐ€๋Š” ๊ฒƒ๊นŒ์ง€ ํ™•์ธ ํ•˜๊ณ  ๊ฐœ๋ฐœ์— ์˜ฌ๋ ค ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด๋ณด๋‹ˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋˜์ง€ ๋ชปํ•˜๋Š” ํ˜„์ƒ์ด ํ™•์ธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์™œ ๊ทธ๋Ÿฐ๊ฐ€ ๋ดค๋”๋‹ˆ jar ํŒŒ์ผ๋ช…์ด ์ด์ƒํ•˜๊ฒŒ ๋ฐ”๋€Œ์–ด์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋์— -plain postfix๊ฐ€ ๋ถ™์€ ํŒŒ์ผ๋ช…์ด ๋ฐฐํฌ๋œ ๊ฒƒ์„ ํ™•์ธํ–ˆ๊ณ  ์ด๊ฒŒ ๋ญ”๊ฐ€ ์‹ถ์–ด ๊ตฌ๊ธ€๋ง์„ ํ•ด๋ณด๋‹ˆ release note ์—์„œ ์„ค๋ช…์„ ์ฐพ์•„๋ณผ ์ˆ˜ ์—†์—ˆ์ง€๋งŒ(๋‚ด๊ฐ€ ๋ชป ๋ณธ ๊ฑธ์ˆ˜๋„?) 2.5๋ฒ„์ „๋ถ€ํ„ฐ ๋ฐœ์ƒํ•˜๋Š” ํ˜„์ƒ์ด์—ˆ๊ณ  gradle ์„ค์ •์—์„œ jar task๋ฅผ ๋น„ํ™œ์„ฑํ™” ์‹œํ‚ค๊ฑฐ๋‚˜ ๋ฐฐํฌํŒŒ์ผ์„ ๋งŒ๋“œ๋Š” task ์—์„œ ํ•ด๋‹น ํŒŒ์ผ์„ exclude ์ฒ˜๋ฆฌํ•˜๋ฉด ๋˜๋Š” ๋ฌธ์ œ์˜€์Šต๋‹ˆ๋‹ค.

 

๋งค์ผ ๋ฐ˜๋ณต๋˜๋Š” ํŠน๋ณ„ํ•˜์ง€ ์•Š์€ ์—…๋ฌด๋“ค๋งŒ ํ•˜๋‹ค๊ฐ€ ์ฒ˜์Œ์œผ๋กœ ํ•ด๋ณธ ํ”„๋ ˆ์ž„์›Œํฌ ์—…๊ทธ๋ ˆ์ด๋“œ ์ž‘์—…์€ ๋„ˆ๋ฌด ์žฌ๋ฏธ์žˆ์—ˆ๊ณ  ์ข‹์€ ๊ฒฝํ—˜์ด์—ˆ์Šต๋‹ˆ๋‹ค.

 

๋‚ด๋…„์—๋Š” java 17 + SpringBoot 3 ๊ธฐ๋ฐ˜์˜ ์‹ ๊ทœ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋Š”๋ฐ ๋ฒŒ์จ๋ถ€ํ„ฐ ๊ธฐ๋Œ€๋˜๊ณ  ํ˜„์žฌ ์‚ฌ์šฉ์ค‘์ธ java 11 ์—์„œ 17๊นŒ์ง€ ์–ด๋–ค ๋ณ€ํ™”๋“ค์ด ์žˆ์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์ ธ์•ผ ํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.