๐จ Spring Boot 3.x 4.0 Migration: ์ค์ ๋ก ๋ฌด์์ด ๊นจ์ก๋๊ฐ (๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๊ฐ ์ด๋ป๊ฒ ๊ณ ์ณค๋๊ฐ)
Source: Dev.to
Jakarta ๋ค์์คํ์ด์ค ๋ฌธ์
์ฆ์
Spring Bootโฏ3.x๋ก Jakarta๋ก ๋ง์ด๊ทธ๋ ์ด์
ํ๋๋ผ๋ ์ผ๋ถ ์ ์ด ์์กด์ฑ์ด ์ฌ์ ํ javax.* ํด๋์ค๋ฅผ ๊ฐ์ ธ์ต๋๋ค. ํํ ๋ฌธ์ ๋ฅผ ์ผ์ผํค๋ ํญ๋ชฉ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ์ค๋๋ ๊ฒ์ฆ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- SOAP / JAXB ๋๊ตฌ
- ๋ ๊ฑฐ์ ์๋ธ๋ฆฟ ํํฐ
ํด๊ฒฐ ๋ฐฉ๋ฒ
mvn dependency:tree | grep javax
๊ทธ ๋ค์:
- Jakartaโํธํ ๋ฒ์ ์ ๊ฐ์ ์ ์ฉํฉ๋๋ค.
- ์ค๋๋ ์ ์ด ์์กด์ฑ์ ๋ช ์์ ์ผ๋ก ์ ์ธํฉ๋๋ค.
Lesson: โIt worked in 3.xโ doesnโt mean itโs safe in 4.0. โ ๊ตํ: โ3.x์์๋ ์๋ํ์๋คโ๋ 4.0์์๋ ์์ ํ๋ค๋ ๋ป์ด ์๋๋๋ค.
Spring Security ๊ตฌ์ฑ ๋ณ๊ฒฝ
์ฆ์
Spring Bootโฏ4 ์๋์ Spring Security๋ ์์ ํ ๋ช ์์ ์ธ ๊ตฌ์ฑ์ ๊ธฐ๋ํฉ๋๋ค. ๊นจ์ง ๋ถ๋ถ:
- ํ๊ธฐ๋ DSL์ด ์ ๊ฑฐ๋์์ต๋๋ค.
- ๊ธฐ๋ณธ๊ฐ์ด ๋ณ๊ฒฝ๋์์ต๋๋ค(ํนํ CSRF ๋ฐ ์ธ์ ์ฒ๋ฆฌ).
- ์ฌ์ฉ์ ์ ์ ํํฐ๊ฐ ๋ ์ด์ ์๋ ๋ฑ๋ก๋์ง ์์ต๋๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ
๋ช
์์ ์ธ SecurityFilterChain ๋น์ผ๋ก ์ ํํ๊ณ ๊ธฐ๋ณธ๊ฐ์ ์์กดํ์ง ์๋๋ก ํฉ๋๋ค.
@Bean
SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
.csrf(csrf -> csrf.disable())
.authorizeHttpRequests(auth -> auth.anyRequest().authenticated());
return http.build();
}
Lesson: Implicit security configs are gone; be explicit or be surprised. โ ๊ตํ: ์์์ ์ธ ๋ณด์ ์ค์ ์ ์ฌ๋ผ์ก์ต๋๋ค; ๋ช ์์ ์ผ๋ก ์์ฑํ์ง ์์ผ๋ฉด ๋๋ผ๊ฒ ๋ฉ๋๋ค.
์คํํฐ ์ด๋ฆ ๋ณ๊ฒฝ, ๋ถํ ๋ฐ ์ ๊ฑฐ
์ฆ์
์ฌ๋ฌ Spring Boot ์คํํฐ๊ฐ ์ด๋ฆ์ด ๋ฐ๋๊ฑฐ๋, ๋ถํ ๋๊ฑฐ๋, ์์ ํ ์ ๊ฑฐ๋์์ต๋๋ค. ํนํ ๋ค์ ์์ญ์์:
- ๊ด์ธก์ฑ
- Actuator ํ์ฅ
- ๋ ๊ฑฐ์ ํตํฉ
ํด๊ฒฐ ๋ฐฉ๋ฒ
์คํํฐ๋ฅผ ์๋์ผ๋ก ๊ฐ์ฌํ์ญ์์ค; ๊ธฐ์กด ๋ชฉ๋ก์ ์ ๋ขฐํ์ง ๋ง์ธ์.
mvn dependency:tree | grep spring-boot-starter
์ ๊ฑฐ๋ ์คํํฐ๋ฅผ ๋ค์์ผ๋ก ๊ต์ฒดํฉ๋๋ค:
- ๋ช ์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ๋๋
- ์๋ก์ด ๋ชจ๋์ ๋์.
Java ๋ฒ ์ด์ค๋ผ์ธ ๋ถ์ผ์น (Javaโฏ21+)
์ฆ์
Spring Bootโฏ4.0์ ์ต์ Java(Javaโฏ21+) ์ฌ์ฉ์ ๋์ฑ ๊ฐ์ ํฉ๋๋ค. ๊นจ์ง ๋ถ๋ถ:
- Testcontainers ์ด๋ฏธ์ง
- ByteBuddy / Mockito ํธํ์ฑ
- JVM ํ๋๊ทธ๊ฐ ์ ๊ฑฐ๋์๊ฑฐ๋ ๋ฌด์๋จ
ํด๊ฒฐ ๋ฐฉ๋ฒ
- ๋ก์ปฌ Java ๋ฒ์ , CI Java ๋ฒ์ , Maven ํด์ฒด์ธ์ ์ผ์น์ํต๋๋ค.
- ํ ์คํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ๊ทน์ ์ผ๋ก ์ ๊ทธ๋ ์ด๋ํฉ๋๋ค.
Lesson: Donโt debug Spring errors when itโs really a JVM mismatch. โ ๊ตํ: ์ค์ ๋ฌธ์ ๋ JVM ๋ฒ์ ๋ถ์ผ์น์ผ ๋ Spring ์ค๋ฅ๋ฅผ ๋๋ฒ๊น ํ์ง ๋ง์ธ์.
๊ด์ธก์ฑ ๊ธฐ๋ณธ๊ฐ ๋ฆฌํฉํฐ๋ง
์ฆ์
Spring Bootโฏ4๋ ๊ด์ธก์ฑ ๊ธฐ๋ณธ๊ฐ์ ๋ฆฌํฉํฐ๋งํ์ต๋๋ค:
- ์๋ํฌ์ธํธ๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ๋นํ์ฑํ๋จ
- ๋ฉํธ๋ฆญ ์ด๋ฆ์ด ๋ณ๊ฒฝ๋จ
- ๋ ธ์ถ ๊ท์น์ด ๋ค๋ฆ
ํด๊ฒฐ ๋ฐฉ๋ฒ
Actuator ๋ ธ์ถ์ ๋ช ์์ ์ผ๋ก ๋ค์ ์ ์ธํฉ๋๋ค:
management:
endpoints:
web:
exposure:
include: health,info,metrics
Lesson: โNo errorโ โ โworkingโ. โ ๊ตํ: โ์ค๋ฅ ์์โ์ด ๊ณง โ์ ์ ๋์โ์ ์๋ฏธํ์ง๋ ์์ต๋๋ค.
๋ง์ด๊ทธ๋ ์ด์ ์ฒดํฌ๋ฆฌ์คํธ ๋ฐ ์ถ๊ฐ ์ฝ์๊ฑฐ๋ฆฌ
์ฐ๋ฆฌ๋ ๋ชจ๋ ํ๊ดด์ ๋ณ๊ฒฝ, ํด๊ฒฐ์ฑ , ๊ทธ๋ฆฌ๊ณ ํจ์ ์ ๊ตฌ์กฐํ๋ ๋ง์ด๊ทธ๋ ์ด์ ์ฒดํฌ๋ฆฌ์คํธ์ ๋ฌธ์ํํ์ต๋๋ค.
Full Spring Bootโฏ3.x โโฏ4.0 migration guide
๐
ํฌํจ ๋ด์ฉ:
- ์์กด์ฑ ๊ฐ์ฌ ๋จ๊ณ
- ๋ณด์ ๋ง์ด๊ทธ๋ ์ด์ ํจํด
- ํ ์คํธ ๋ฐ CI ์์
- Actuator ๋ฐ ๊ด์ธก์ฑ ๋ณ๊ฒฝ
์ฐ๋ฆฌ๋ ์ค์ ์ฌ๋ก ๊ธฐ๋ฐ ๋ง์ด๊ทธ๋ ์ด์
๊ฐ์ด๋(๋ง์ผํ
๋ฌธ์๊ฐ ์๋) ์์ ๋๋ ํฐ๋ฆฌ๋ฅผ ๊ตฌ์ถํ๊ณ ์์ต๋๋ค:
๐
Spring Boot ์ ๊ทธ๋ ์ด๋, Java ๋ฒ์ ์ ํ, ํน์ ํ๋ ์์ํฌ ๋ง์ด๊ทธ๋ ์ด์ ์ ๋ค๋ฃจ๊ณ ์๋ค๋ฉด, ๊ฑฐ๊ธฐ์ ์ ์ฉํ ์ ๋ณด๋ฅผ ์ฐพ์ ์ ์์ ๊ฒ์ ๋๋ค.
Spring Boot ์
๊ทธ๋ ์ด๋ ์ค ๊ฐ์ฅ ์ด์ํ๊ฒ ๊นจ์ง ๊ฒ์ ๋ฌด์์ด์๋์?
์กฐ์ฉํ ๋์์ด ๋ฐ๋ ๊ฒฝ์ฐ?
๋
ธํธ๋ฅผ ๋น๊ตํด ๋ด
์๋ค ๐