Spring6.1 ๋ถ€ํ„ฐ ๋ณ€๊ฒฝ๋œ Parameter Name Retention

2025. 3. 11. 14:54ยท๐Ÿ“‚ backend/spring

1. ๋ฐฐ๊ฒฝ : ์œ ์—ฐํ•˜๊ฒŒ ๋ถ„์‚ฐ๋ฝ ํ‚ค ๊ฐ’ ์„ค์ •ํ•˜๊ธฐ

 ๊ฐ ์ขŒ์„ ์„ ์  ์ƒํ™ฉ์˜ ๊ฒฝํ•ฉ ์ƒํ™ฉ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด Redisson library ๋ฅผ ํ™œ์šฉํ•ด ๋ถ„์‚ฐ๋ฝ์„ ์ ์šฉํ•˜๋Š” ๋ฐฉ์•ˆ์„ ์„ ํƒํ–ˆ๋‹ค. ๊ธฐ์กด์˜ setnx, setex ๋ช…๋ น์–ด ๊ธฐ๋ฐ˜์˜ lecttuce library ๋Š” setnx, setex ๋ช…๋ น์–ด ๊ธฐ๋ฐ˜์˜ ์Šคํ•€๋ฝ์œผ๋กœ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฝ ํ•ด์ฒด, ์š”์ฒญ ๊ณผ์ •์—์„œ Redis ์˜ ๋ถ€ํ•˜๊ฐ€ ์ฆ๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฐ˜๋ฉด Redisson ์€ pub/sub ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•˜๊ธฐ ํ•˜์—ฌ ๊ตฌ๋…๋งŒ ํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ๋ฝ์„ ํ•ด์ œํ–ˆ๋‹ค๋Š” ์‹ ํ˜ธ๋งŒ ๋ฐ›๊ณ  ๋ฝ ์‹œ๋„๋ฅผ ํš๋“ํ•  ์ˆ˜ ์žˆ์–ด ์ƒ๋Œ€์ ์œผ๋กœ Redis์˜ ๋ถ€ํ•˜๋ฅผ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

๋ถ„์‚ฐ๋ฝ ๋กœ์ง์„ ์Šคํ”„๋ง ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด @DistributedLock ์ปค์Šคํ…€ ์–ด๋…ธํ…Œ์ด์…˜์„ ์กฐ์ธ ํฌ์ธํŠธ์œผ๋กœ ์„ค์ •ํ•ด ๋ถ„์‚ฐ๋ฝ ์—์ŠคํŽ™ํŠธ๋ฅผ ๊ตฌํ˜„ํ–ˆ๋‹ค. ์ขŒ์„์˜ ํ‚ค ๊ฐ’์„ ์‹œ๊ณ„์—ด ๊ธฐ๋ฐ˜์˜ UUID version7 ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์–ด ๋ถ„์‚ฐ๋ฝ์˜ ํ‚ค ๊ฐ’์œผ๋กœ ํ™œ์šฉํ•˜๊ณ , ๋ฉ”์„œ๋“œ ์•„๊ทœ๋จผํŠธ๋ฅผ ํ†ตํ•ด ์ „๋‹ฌ๋ฐ›๊ธฐ ๋•Œ๋ฌธ์— ์•„๊ทœ๋จผํŠธ ๊ฐ’์„ ํŒŒ์‹ฑํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ํ–ˆ๋‹ค.

 

seatId argument ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ๋ฒ•

 

 

2.  ๋ฌธ์ œ  : ์กฐ์ธํฌ์ธํŠธ ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ’์ด null ์ด ๋ฐ˜ํ™˜๋œ๋‹ค?

Spel(Spring Expression Language) ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•˜๋„๋ก ๊ตฌ์„ฑํ–ˆ๋Š”๋ฐ joinPoint ์—์„œ ๋ฉ”์„œ๋“œ ์•„๊ทœ๋จผํŠธ๋ฅผ ์ฃผ์ž…ํ•˜๋Š” ๊ณผ์ •์—์„œ ๊ณ„์†ํ•ด์„œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. joinpoint.getSigniture() ๋ถ€๋ถ„์„ ๋””๋ฒ„๊น…ํ•ด๋ณด๋‹ˆ ํŒŒ๋ผ๋ฏธํ„ฐ ์ด๋ฆ„์ด ์ „๋‹ฌ๋˜์ง€ ์•Š๊ณ  null ์„ ๋ฐ˜ํ™˜ํ–ˆ๋‹ค. Spring 5 ๋ฒ„์ „์—์„œ๋Š” (Spring Boot 2.x) ๋ฐœ์ƒํ•˜์ง€ ์•Š์•˜๋˜ ๋ฌธ์ œ๊ฐ€ Spring6 ๋ฒ„์ „์—์„œ ๋ฐœ์ƒํ•ด ๋‹นํ™ฉํ–ˆ์ง€๋งŒ ์›์ธ์„ ์ฐพ์•„๋ณด์•˜๋‹ค. ์›์ธ์€ ๋ฒ„์ „ ์—…์— ๋”ฐ๋ฅธ ํŒŒ๋ผ๋ฏธํ„ฐ ์ด๋ฆ„ ๊ด€๋ฆฌ ๋ฒ”์œ„๊ฐ€ ๋ณ€๊ฒฝ๋œ ์ด์œ ์˜€๋‹ค.

1. DistributedLock aspect : ์กฐ์ธํฌ์ธํŠธ ์•„๊ทœ๋จผํŠธ๋ฅผ ํ‚ค ๊ฐ’์œผ๋กœ ๋„˜๊ธฐ๊ธฐ

 

2. CustomSpringELParser : ํŒŒ๋ผ๋ฏธํ„ฐ ์ด๋ฆ„์— ๊ฐ’์„ ์ฃผ์ž…ํ•˜๊ธฐ ์œ„ํ•œ ์œ ํ‹ธ ํด๋ž˜์Šค
paratemer name ์ด null ์ด ๋“ค์–ด์˜จ๋‹ค๋ผ... (์‚ฌ์šฉ ๋ฒ„์ „์€ Spring 6.2)

 

 

3.  ์›์ธ  : Spring 6.1 ๋ถ€ํ„ฐ Parameter Name Retention ๋ณ€๊ฒฝ๋๋‹ค.

Spring 6.1 ๋ฒ„์ „๋ถ€ํ„ฐ ๋” ์ด์ƒ ๋ฐ”์ดํŠธ์ฝ”๋“œ๋ฅผ ํŒŒ์‹ฑํ•˜์—ฌ ๋งค๊ฐœ๋ณ€์ˆ˜ ์ด๋ฆ„์„ ์ถ”๋ก ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜์ง€ ์•Š๋Š”๋‹ค.

 

์ด์ „ ๋ฒ„์ „์˜ Spring ์€ LocalVariableTableParameterNameDiscover ์ด๋ผ๋Š” ๊ตฌํ˜„์ฒด์—์„œ ์ปดํŒŒ์ผ๋œ .class ํŒŒ์ผ์˜ LocalVariableTable ๋ผ๋Š” ๊ณต๊ฐ„์—์„œ ๋ฉ”์„œ๋“œ ํŒŒ๋ผ๋ฏธํ„ฐ ์ด๋ฆ„์„ ์กฐํšŒํ–ˆ๋‹ค.

 

ํ•˜์ง€๋งŒ, Spring 6.1 ๋ฒ„์ „๋ถ€ํ„ฐ StandardReflectionParameterNameDiscoverer ์œผ๋กœ JDK ์˜ Reflection ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•ด ๋ฉ”์„œ๋“œ ํŒŒ๋ผ๋ฏธํ„ฐ ์ด๋ฆ„์„ ์กฐํšŒํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ณ€๊ฒฝ๋˜์–ด ์ปดํŒŒ์ผ๋Ÿฌ์˜ `-parameter` ํ”Œ๋ž˜๊ทธ์— ์˜์กดํ•œ๋‹ค.

 

https://github.com/spring-projects/spring-framework/wiki/Spring-Framework-6.1-Release-Notes#parameter-name-retention

 

4.  ํ•ด๊ฒฐ  : -parameters ์ปดํŒŒ์ผ ์˜ต์…˜ ์ถ”๊ฐ€ํ•˜๊ธฐ

(1) Gradle ํ™˜๊ฒฝ์—์„œ -parameters ์ปดํŒŒ์ผ ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•

Gradle ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์Šคํ”„๋ง ํ”„๋กœ์ ํŠธ๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ์ž๋ฐ” ์ปดํŒŒ์ผ ์‹œ์ ์— -parameters ๋ฅผ ์ถ”๊ฐ€ํ•ด ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์ด ์ปดํŒŒ์ผ ์•„๊ทœ๋จผํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ํ”„๋กœ์ ํŠธ ๋นŒ๋“œ ์‹œ์— `-parameters` ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•˜์—ฌ ๋นŒ๋“œํ•˜๋ฏ€๋กœ ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์ฃผ์ž…๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

tasks.withType<JavaCompile>(){
    options.compilerArgs.add("-parameters")
}

 

(2) Intellij ์—์„œ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•

์œ„์น˜ : Settings > Build, Execution, Deployment > Compiler > Java Compiler > Additional command line parameters

 

์œ„์™€ ๊ฐ™์€ ์œ„์น˜์— ์ ‘์†ํ•˜์—ฌ `-parameters` ์˜ต์…˜์„ ์„ค์ •ํ•˜๊ณ  rebuild (cmd + shift + F9) ํ•  ๊ฒฝ์šฐ, ํ•ด๋‹น ์ปดํŒŒ์ผ๋Ÿฌ ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

intellij > settings

 

ํ•ด๋‹น ์„ค์ •๋“ค ์ถ”๊ฐ€ํ•˜๊ณ  ํ™•์ธ

 

 

Reference

  • ํ’€ํ•„๋จผํŠธ ์ž…๊ณ  ์„œ๋น„์ŠคํŒ€์—์„œ ๋ถ„์‚ฐ๋ฝ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ• - Spring Redisson
  • Spring Framework 6.1 Release Notes - parameter name retention
  • [์ฟ ํ‚ค์˜ ๊ฐœ๋ฐœ ๋ธ”๋กœ๊ทธ] Spring 6.1์—์„œ ๋ณ€๊ฒฝ๋œ Parameter Name Retention

'๐Ÿ“‚ backend > spring' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

์•Œ๋ฆผ ๊ธฐ๋Šฅ Polling ์—์„œ SSE ์ „ํ™˜ํ•˜๋ฉฐ ๊ฒช์—ˆ๋˜ ์‚ฝ์งˆ (์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ)  (0) 2025.07.11
Presigned URL ๋กœ ํŒŒ์ผ ์—…๋กœ๋“œ ๊ธฐ๋Šฅ์„ ์™œ ์ ์šฉํ–ˆ๋ƒ๋ฉด์š”.  (1) 2025.06.01
์ปค์Šคํ…€ ์–ด๋…ธํ…Œ์ด์…˜ ๊ธฐ๋ฐ˜ AOP ๋ฅผ @Transactional ๋ณด๋‹ค ๋‚˜์ค‘์— ์‹คํ–‰์‹œํ‚ค๊ธฐ  (0) 2025.01.27
์ค‘๋ณต๋˜๋Š” ์Šค์ผ€์ค„๋ง ๋ถ„์‚ฐ๋ฝ์œผ๋กœ ํ•˜๋‚˜๋งŒ ์‹คํ–‰ํ•˜๊ธฐ(w.ShedLock)  (0) 2025.01.16
Spring REST Docs + Swagger UI ๋ฅผ ํ†ตํ•œ API ๋ฌธ์„œํ™”  (0) 2024.12.07
'๐Ÿ“‚ backend/spring' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • ์•Œ๋ฆผ ๊ธฐ๋Šฅ Polling ์—์„œ SSE ์ „ํ™˜ํ•˜๋ฉฐ ๊ฒช์—ˆ๋˜ ์‚ฝ์งˆ (์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ)
  • Presigned URL ๋กœ ํŒŒ์ผ ์—…๋กœ๋“œ ๊ธฐ๋Šฅ์„ ์™œ ์ ์šฉํ–ˆ๋ƒ๋ฉด์š”.
  • ์ปค์Šคํ…€ ์–ด๋…ธํ…Œ์ด์…˜ ๊ธฐ๋ฐ˜ AOP ๋ฅผ @Transactional ๋ณด๋‹ค ๋‚˜์ค‘์— ์‹คํ–‰์‹œํ‚ค๊ธฐ
  • ์ค‘๋ณต๋˜๋Š” ์Šค์ผ€์ค„๋ง ๋ถ„์‚ฐ๋ฝ์œผ๋กœ ํ•˜๋‚˜๋งŒ ์‹คํ–‰ํ•˜๊ธฐ(w.ShedLock)
cooper25
cooper25
  • cooper25
    dev cooper
    cooper25
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (84)
      • ๐Ÿ“‚ backend (34)
        • spring (19)
        • architecture (10)
        • test (5)
      • ๐Ÿ“‚ computer-science (5)
      • ๐Ÿ“‚ programming-language (12)
        • java (12)
      • ๐Ÿ“‚ infra (9)
        • mysql (4)
        • redis (2)
        • message-queue (3)
      • ๐Ÿ“‚ cloud (2)
        • aws (2)
      • ๐Ÿ“‚ frontend (1)
        • react (0)
      • ๐Ÿ“‚ education & lecture (16)
        • ์ธํ”„๋ผ ๊ณต๋ฐฉ (11)
        • ํ•ญํ”Œ ๋ฐฑ์—”๋“œ 7๊ธฐ (5)
      • ๐Ÿ“‚ ai (1)
        • claude (1)
      • ๐Ÿ“‚ etc (2)
        • ํšŒ๊ณ  (1)
        • ์ปจํผ๋Ÿฐ์Šค (1)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ๋ฐ์ดํ„ฐ ์ค‘์‹ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ค๊ณ„
    Redisson
    ๋™์‹œ์„ฑ
    ํšŒ๊ณ 
    kafka
    UUID
    spring-batch
    ํ•ญํ•ดํ”Œ๋Ÿฌ์Šค
    react
    mysql
    JPA
    ์ธํ”„๋ผ๊ณต๋ฐฉ
    spring camp 2025
    spring AOP
    gof
    spring
    ๊ฐ€์ƒ ๋ฉด์ ‘ ์‚ฌ๋ก€๋กœ ๋ฐฐ์šฐ๋Š” ๋Œ€๊ทœ๋ชจ ์„ค๊ณ„
    ์Šคํ”„๋ง์บ ํ”„ ํ›„๊ธฐ
    nGrinder
    AWS
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.6
cooper25
Spring6.1 ๋ถ€ํ„ฐ ๋ณ€๊ฒฝ๋œ Parameter Name Retention
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”