728x90
λ°˜μ‘ν˜•

ν•„λ“œ μ£Όμž… 방식(Field Injection)

 

: @Autowired μ–΄λ…Έν…Œμ΄μ…˜μ„ μ‚¬μš©ν•˜μ—¬ 클래슀의 멀버 λ³€μˆ˜μ— 직접 μ˜μ‘΄μ„±μ„ μ£Όμž…ν•˜λŠ” 방식

@Autowired
private JoinService joinService

 

μž₯점

1. κ°„νŽΈν•¨(ν•„λ“œ, μƒμ„±μž λ˜λŠ” λ©”μ„œλ“œμ— κ°„λ‹¨νžˆ λΆ™μ—¬μ„œ μ˜μ‘΄μ„±μ„ μ£Όμž…ν•  수 μžˆλ‹€ /  μ½”λ“œκ°€ 짧고, 직관적이며 섀정이 κ°„λ‹¨ν•˜λ‹€)

2. μœ μ—°μ„±(ν•„λ“œ, μƒμ„±μž, μ„Έν„° λ©”μ„œλ“œ λ“± λ‹€μ–‘ν•œ μ£Όμž… 방법을 μ§€μ›ν•œλ‹€ / 클래슀의 ꡬ쑰에 따라 μ μ ˆν•œ μ£Όμž… 방식을 선택할 수 μžˆλ‹€)

 

μƒμ„±μž μ£Όμž… 방식(Constructor Injection)

 

: 클래슀의 μƒμ„±μžλ₯Ό 톡해 μ˜μ‘΄μ„±μ„ μ£Όμž…ν•˜λŠ” λ°©μ‹μœΌλ‘œ μ£Όμž…ν•  μ˜μ‘΄μ„±μ„ μƒμ„±μžμ˜ λ§€κ²Œλ³€μˆ˜λ‘œ λ°›λŠ”λ‹€...

private final JoinService joinService;

@Autowired
public YourClassName(JoinService joinService) {
    this.joinService = joinService;
}

 

 

근데 μ™œ... μƒμ„±μž μ£Όμž… 방식이 더 μ’‹μ„κΉŒμš”??

 

 

1.λΆˆλ³€μ„±(Immutability)

- ν•„λ“œ μ£Όμž… λ°©μ‹μ—μ„œλŠ” private ν•„λ“œκ°€ final일 수 μžˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ μƒμ„±μž μ£Όμž…μ„ μ‚¬μš©ν•˜λ©΄ μ£Όμž…λœ μ˜μ‘΄μ„±μ„ final둜 μ„ μ–Έν•  수 μžˆμ–΄ 객체의 λΆˆλ³€μ„±μ„ 보μž₯ν•©λ‹ˆλ‹€

- μ΄λŠ” 객체가 μƒμ„±λœ ν›„ μ˜μ‘΄μ„±μ΄ λ³€κ²½λ˜μ§€ μ•Šλ„λ‘ ν•©λ‹ˆλ‹€

 

2. ν…ŒμŠ€νŠΈ μš©μ΄μ„±

- μƒμ„±μž μ£Όμž…μ€ λ‹¨μœ„ ν…ŒμŠ€νŠΈ μ‹œμ— 더 μ‰½μŠ΅λ‹ˆλ‹€. μ˜μ‘΄μ„±μ„ μ£Όμž…ν•˜κΈ° μœ„ν•΄ λ¦¬ν”Œλ ‰μ…˜μ΄λ‚˜ ν”„λ ˆμž„μ›Œν¬μ— μ˜μ‘΄ν•˜μ§€ μ•Šκ³ , λ‹¨μˆœνžˆ μƒμ„±μžλ₯Ό ν˜ΈμΆœν•˜λ©΄λ©λ‹ˆλ‹€

- 이λ₯Ό 톡해 더 κΉ¨λ—ν•˜κ³  κ°„λ‹¨ν•œ ν…ŒμŠ€νŠΈ μ½”λ“œλ₯Ό μž‘μ„±ν•  수 μžˆμŠ΅λ‹ˆλ‹€

 

3. μˆœν™˜ μ˜μ‘΄μ„± 방지

- μƒμ„±μž μ£Όμž…μ€ μˆœν™˜ μ˜μ‘΄μ„±μ„ 컴파일 μ‹œμ μ— 감지할 수 있게 λ©λ‹ˆλ‹€. μ΄λŠ” μˆœν™˜ μ˜μ‘΄μ„±μ„ λ°©μ§€ν•˜κ³ , 더 λͺ…ν™•ν•œ μ˜μ‘΄μ„± ꡬ쑰λ₯Ό μœ μ§€ν•˜λŠ” 데 도움이 λ©λ‹ˆλ‹€.

- ν•„λ“œ μ£Όμž…μ΄λ‚˜ setter μ£Όμž… λ°©μ‹μ—μ„œλŠ” μˆœν™˜ μ˜μ‘΄μ„±μ„ λŸ°νƒ€μž„κΉŒμ§€ μ•Œ 수 μ—†μŠ΅λ‹ˆλ‹€

 

4. λͺ…μ‹œμ  μ˜μ‘΄μ„±

- μƒμ„±μž μ£Όμž…μ€ ν΄λž˜μŠ€κ°€ μ–΄λ–€ μ˜μ‘΄μ„±μ„ ν•„μš”λ‘œ ν•˜λŠ”μ§€ λͺ…μ‹œμ μœΌλ‘œ λ³΄μ—¬μ€λ‹ˆλ‹€. μ΄λŠ” μ½”λ“œμ˜ 가독성과 μœ μ§€λ³΄μˆ˜μ„±μ„ λ†’μž…λ‹ˆλ‹€.

- 반면 ν•„λ“œ μ£Όμž… 방식은 μ˜μ‘΄μ„±μ„ 클래슀 λ‚΄λΆ€μ—μ„œλ§Œ μ•Œ 수 μžˆμ–΄, μ˜μ‘΄μ„±μ„ μΆ”μ ν•˜κΈ° μ–΄λ ΅μŠ΅λ‹ˆλ‹€

 

=> κ²°λ‘ 

@Authowired  μ–΄λ…Έν…Œμ΄μ…˜μ€ μ‚¬μš©μ΄ κ°„λ‹¨ν•˜κ³  μ§κ΄€μ μ΄μ–΄μ„œ 널리 μ‚¬μš©λ˜μ§€λ§Œ, ν•„λ“œ μ£Όμž… λ°©μ‹λ³΄λ‹€λŠ” μƒμ„±μž μ£Όμž… 방식을 ꢌμž₯ν•©λ‹ˆλ‹€. μƒμ„±μž μ£Όμž… 방식은 객체의 λΆˆλ³€μ„±μ„ 보μž₯ν•˜κ³  μ½”λ“œμ˜ λͺ…ν™•μ„±κ³Ό ν…ŒμŠ€νŠΈ μš©μ΄μ„±μ„ 높이며, μˆœν™˜ μ˜μ‘΄μ„±μ„ λ°©μ§€ν•˜λŠ” 데 도움이 λ©λ‹ˆλ‹€. μ΄λŸ¬ν•œ 이유둜, μƒμ„±μž μ£Όμž… 방식이 더 많이 ꢌμž₯λ˜λŠ” κ²ƒμž…λ‹ˆλ‹€

 

728x90
λ°˜μ‘ν˜•

'Spring' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

Spring Security κ³΅λΆ€ν•˜κΈ° (1)  (0) 2024.05.20

+ Recent posts