New Score :0
High Score :0
Run Best
NICE BUSINESS TYPE INDICATOR
3. ๊ธ์ ์ ์น๊ตฌ์๊ฒ ๋น๋ ธ๋๋ฐ ์ค๋์ด ๋์ ์ฃผ๊ธฐ๋ก ํ๋ .. ๊ทธ๋ฐ๋ฐ ์นด๋๊ฐ์ ๋ด์ผํ๋ ๋ ๋ ์ค๋์ธ๋ฐ... ์ด๊ฑธ ์ด์ฉ๋...
4. ์ฐ๋ฆฌ ํ์ฌ๋ ์ค์ํ ์์ฌ ๊ฒฐ์ ์ ํ ๋?
5. ์ด์ฌํ ์ผํ ๋๋ฅผ ์ํ ์ ๋ฌผ์ ์ฃผ๊ณ ์ถ๋ค. ์ด๋ค๊ฒ ์ข์๊น?
6. ์ํ์์ ํฌ์์ํ์ ์ถ์ฒ๋ฐ์๋ค. ์ด๋ค๊ฑธ ๊ฐ์ ํ์ง?
7. ํ์ฌ์์์ ๋๋?
8. ๊ฟ์์ ๊นจ์ด๋๋ 20๋ ์ ์ผ๋ก ๋์๊ฐ๋ค. ๋น์ ์ด ์ ์ผ ๋จผ์ ํ๋์ผ์?
9. ๋ด๊ฐ ์ธ์ฌ ๋ด๋น์๋ผ๋ฉด ์ ๊ท ์ ์ฌ์ ์ฑ์ฉ ์ ์ ์ผ ์ค์ํ๊ฒ ๋ณด๋๊ฒ์?
10. ํ์ฌ์ ์ ๋ง ์ซ์ดํ๋ ๋๋ฃ๊ฐ ์๋ค๋ฉด?
11. ๊ฐ๋ํ ์ง์ ๊ฐ์ฅ์ด ๋์๋ค.. ์๋ ์ ์์ผ ๋ ์ ๋ฌผ์?
12. ํ์ ํ์ฌ ์ถ๊ทผ ์คํ์ผ์?
13.ํ์ฌ ์ฒด์ก๋ํ ํ๋ ๋ ์ด๋ค. ์ค๋ ๋ญํ์ง?
14. ๋์ ์ ๋ฌด ์คํ์ผ์?
Spring Boot์ Spring Framework ๋ฒ์ ์ํธ ํธํ์ฑ ๋ถ์
Spring Framework 6.2๋ 2023๋ 11์ ๊ณต์ ์ถ์๋ ์ฃผ์ ๋ฒ์ ์ผ๋ก, Spring Boot 3.2.0๋ถํฐ ๊ธฐ๋ณธ ์ง์๋ฉ๋๋ค. ์ด ํธํ์ฑ ๊ด๊ณ๋ Spring ์ํ๊ณ์ ๋ฒ์ ์ ์ฑ ๊ณผ ์์กด์ฑ ๊ด๋ฆฌ ๋ฉ์ปค๋์ฆ์ ๊ธฐ๋ฐํฉ๋๋ค.
Spring Framework 6.2์ Spring Boot ์ง์ ๋ฒ์
1. ๊ณต์ ์ง์ ๋ฒ์ ๋งคํธ๋ฆญ์ค
Spring Boot 3.2.0(2023๋ 11์ ์ถ์)๋ถํฐ Spring Framework 6.2.x๊ฐ ๊ธฐ๋ณธ ์๋ฒ ๋ฉ๋ฉ๋๋ค. ์ด๋ Spring Boot์ ๋ฒ์ ๊ด๋ฆฌ ์ ์ฑ ์ ๋ฐ๋ผ ์์ ํ๋ ์์ํฌ ๋ฒ์ ์ด ์๋์ผ๋ก ์ ๋ฐ์ดํธ๋๋ ๊ตฌ์กฐ์์ ๋น๋กฏ๋ฉ๋๋ค.
// Spring Boot 3.2.0์ ๊ธฐ๋ณธ ์์กด์ฑ
plugins {
id 'org.springframework.boot' version '3.2.0'
}
// ๋ด๋ถ์ ์ผ๋ก spring-core 6.2.0 ํฌํจ
implementation 'org.springframework:spring-core:6.2.0'
2. ์ด์ ๋ฒ์ ๊ณผ์ ํธํ์ฑ
Spring Boot 3.1.x ์ดํ์์๋ Spring Framework 6.2๋ฅผ ์๋ ์ค์ ์ผ๋ก๋ง ์ฌ์ฉ ๊ฐ๋ฅํฉ๋๋ค. build.gradle์ ๋ช ์์ ๋ฒ์ ์ง์ ์ด ํ์ํฉ๋๋ค.
// Spring Boot 3.1.x์์ ์๋ ์ค์ ์์
ext['spring-framework.version'] = '6.2.0'
์ฃผ์ ๊ธฐ์ ์ ๋ณ๊ฒฝ ์ฌํญ
1. ํ๋ผ๋ฏธํฐ ๋ค์ ์ถ๋ก ๋ฐฉ์ ๊ฐ์
Spring Framework 6.2๋ถํฐ๋ ๋ฐ์ดํธ์ฝ๋ ํ์ฑ ๋์ ์ปดํ์ผ๋ฌ์ -parameters
์ต์
์ ํ์๋ก ์ฌ์ฉํฉ๋๋ค. ์ด๋ก ์ธํด Lombok๊ณผ์ ํธํ์ฑ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ด ์ฃผ์๊ฐ ํ์ํฉ๋๋ค.
// -parameters ์ต์
์์ด ๋ฐ์ํ๋ ๋ฌธ์ ์์
@ConfigurationProperties(prefix = "app")
public record Config(
String name, // ํ๋ผ๋ฏธํฐ๋ช
์ธ์ ์คํจ
int port
) {}
2. ๋ณด์ ์ธํ๋ผ ๊ฐ์
Spring Security 6.2์์ ํตํฉ์ด ๊ฐํ๋์ด OAuth2 ๋ฆฌ์์ค ์๋ฒ ๊ตฌ์ฑ์ด ๊ฐ์ํ๋์์ต๋๋ค. JWT ๊ฒ์ฆ ์ NimbusJwtDecoder ์๋ ๊ตฌ์ฑ์ด ๊ฐ์ ๋์์ต๋๋ค.
# Spring Boot 3.2์ OAuth2 ์ค์
spring:
security:
oauth2:
resourceserver:
jwt:
issuer-uri: https://idp.example.com
๋ฒ์ ์ ๊ทธ๋ ์ด๋ ์ ๋ต
1. ์ ์ง์ ๋ง์ด๊ทธ๋ ์ด์ ์ ์ฐจ
Spring Boot 2.x → 3.x → 3.2 ๋จ๊ณ๋ณ ์ ๊ทธ๋ ์ด๋๊ฐ ๊ถ์ฅ๋ฉ๋๋ค. ์ฃผ์ ๋จ๊ณ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- Java 17 ์ด์ ํ๊ฒฝ ๊ตฌ์ฑ
- Jakarta EE 9+ ํจํค์ง๋ช ๋ณ๊ฒฝ(javax → jakarta)
- Hibernate 6.2+ ๋ง์ด๊ทธ๋ ์ด์
- Spring Security 6.2 ๊ตฌ์ฑ ์ฌ์ค์
2. ํธํ์ฑ ๊ฒ์ฆ ๋๊ตฌ ํ์ฉ
Spring Boot Migrator(SBM) ๋๊ตฌ๋ฅผ ์ฌ์ฉํด ์์กด์ฑ ์ถฉ๋ ์ฌ์ ๊ฐ์ง ๊ฐ๋ฅ:
$ sbm analyze --type=spring-boot
์ด์ ํ๊ฒฝ ๊ณ ๋ ค์ฌํญ
1. ๋ชจ๋ํฐ๋ง ์ฒด๊ณ ๊ฐํ
Spring Boot 3.2์ OTLP ํธ๋ ์ด์ค ์์ง๊ธฐ์ Micrometer 1.12์ ํตํฉ์ ํ์ฉํ์ฌ ๋ถ์ฐ ์ถ์ ์์คํ ๊ตฌ์ถ์ด ํ์์ ์ ๋๋ค[.
management:
otlp:
tracing:
endpoint: http://otel-collector:4318
2. ์ปจํ ์ด๋ ์ด๋ฏธ์ง ์ต์ ํ
Paketo Buildpacks์ Jammy JRE ๋ฒ ์ด์ค ์ด๋ฏธ์ง ์ฌ์ฉ ์ ๋ฆฌ์์ค ์ฌ์ฉ๋์ด 30% ๊ฐ์ํฉ๋๋ค. ARM ์ํคํ ์ฒ ์ง์๋ ๊ฐ์ ๋์์ต๋๋ค[13].
FROM paketobuildpacks/run-jammy-java
๊ฒฐ๋ก ๋ฐ ๊ถ์ฅ ์ฌํญ
Spring Framework 6.2์ ์ ์ฒด ๊ธฐ๋ฅ ํ์ฉ์ ์ํด์๋ Spring Boot 3.2.0 ์ด์ ๋ฒ์ ์ฌ์ฉ์ด ํ์์ ์ ๋๋ค. ๋ง์ด๊ทธ๋ ์ด์ ์ ๋ค์ ์ฌํญ์ ๊ถ์ฅํฉ๋๋ค:
- ํ ์คํธ ์ปค๋ฒ๋ฆฌ์ง ํ๋ณด: Parameter name inference ๋ณ๊ฒฝ์ ๋ฐ๋ฅธ ์ปดํ์ผ ์ต์ ์ ๊ฒ
- ๋ณด์ ๊ตฌ์ฑ ์ฌ๊ฒ์ฆ: OAuth2 ๋ฆฌ์์ค ์๋ฒ ๋ฐ JWT ๋์ฝ๋ ์ค์ ์ฌํ์ธ
- ๋ชจ๋ํฐ๋ง ์ฒด๊ณ ์ ๋ฐ์ดํธ: OTLP ๊ธฐ๋ฐ ๋ถ์ฐ ์ถ์ ์์คํ ์ฐ๋
- CI/CD ํ์ดํ๋ผ์ธ ๊ฐ์ : Paketo Buildpacks ํ์ฉํ ์ปจํ ์ด๋ ๋น๋ ์ต์ ํ
ํฅํ Spring Boot 3.3์์๋ Spring Framework 6.3์ ์ฌ์ ์ง์์ด ์์๋๋ฉฐ, Project Loom๊ณผ์ ํตํฉ ์ฌํ๊ฐ ์ฃผ๋ชฉ๋ฐ๊ณ ์์ต๋๋ค. ์ง์์ ์ธ ๋ฒ์ ๊ด๋ฆฌ์ ๊ธฐ์ ๋ก๋๋งต ๋ชจ๋ํฐ๋ง์ด ํ์ํฉ๋๋ค.