🌱 → 🌳

[Spring] μ˜μ‘΄μ„± μ£Όμž…(Dependency Injection)μ—μ„œ final ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜λŠ” 이유 λ³Έλ¬Έ

Server/Java & Spring

[Spring] μ˜μ‘΄μ„± μ£Όμž…(Dependency Injection)μ—μ„œ final ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜λŠ” 이유

BAY 2023. 3. 22. 10:17
728x90
private final ProductService productservice

 

문득 μ˜μ‘΄μ„± μ£Όμž…μ„ ν•˜λ‹€κ°€ final을 μ¨μ£ΌλŠ” μ΄μœ κ°€ κΆκΈˆν•΄μ‘Œλ‹€ . 

 

μ˜μ‘΄μ„± μ£Όμž…(Dependency Injection)μ—μ„œ final ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜λŠ” μ΄μœ λŠ” λ‹€μŒκ³Ό κ°™λ‹€.

  1. λΆˆλ³€μ„±(Immutability)
    • final ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜λ©΄ ν•΄λ‹Ή λ³€μˆ˜κ°€ ν•œ 번 μ΄ˆκΈ°ν™”λœ μ΄ν›„μ—λŠ” 값을 λ³€κ²½ν•  수 μ—†κ²Œ λœλ‹€. μ΄λŠ” 객체의 μƒνƒœλ₯Ό λΆˆλ³€ν•˜κ²Œ μœ μ§€ν•˜κ³ , 객체의 λΆˆλ³€μ„±(Immutability)을 보μž₯ν•˜λŠ” 데 도움이 λœλ‹€. μ˜μ‘΄μ„± μ£Όμž…μ—μ„œλŠ” μ£Όμž…λœ 객체의 μƒνƒœκ°€ λ³€κ²½λ˜μ§€ μ•Šλ„λ‘ ν•˜λŠ” 것이 μ€‘μš”ν•˜κΈ° λ•Œλ¬Έμ— final ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ 객체의 λΆˆλ³€μ„±μ„ 보μž₯ν•  수 μžˆλ‹€.
  2. μ•ˆμ •μ„±(Safety)
    • final ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜λ©΄ μ»΄νŒŒμΌλŸ¬κ°€ λ³€μˆ˜μ˜ μ΄ˆκΈ°ν™” μ—¬λΆ€λ₯Ό 체크할 수 μžˆλ‹€.
    • μ΄λŠ” λ³€μˆ˜λ₯Ό μ„ μ–Έν•œ 후에 λ°”λ‘œ μ΄ˆκΈ°ν™”ν•΄μ•Ό ν•œλ‹€λŠ” κ·œμΉ™μ„ κ°•μ œν•¨μœΌλ‘œμ¨, μ΄ˆκΈ°ν™”λ˜μ§€ μ•Šμ€ λ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜λŠ” μ‹€μˆ˜λ₯Ό 방지할 수 μžˆλ‹€.
    • μ˜μ‘΄μ„± μ£Όμž…μ—μ„œ μ£Όμž…λœ 객체가 μ΄ˆκΈ°ν™”λ˜μ§€ μ•Šμ€ μƒνƒœλ‘œ μ‚¬μš©λ˜λŠ” 것을 λ°©μ§€ν•˜λŠ” 데 λ„μ›€μ€Œ
  3. 가독성(Readability)
    • final ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜λ©΄ ν•΄λ‹Ή λ³€μˆ˜κ°€ μ΄ˆκΈ°ν™”λœ μ΄ν›„μ—λŠ” 값이 λ³€κ²½λ˜μ§€ μ•Šμ„ κ²ƒμž„μ„ λͺ…μ‹œμ μœΌλ‘œ λ‚˜νƒ€λ‚Ό 수 μžˆλ‹€.
    • μ½”λ“œμ˜ 가독성(Readability)을 높이고, μ½”λ“œμ˜ μ˜λ„λ₯Ό λͺ…ν™•ν•˜κ²Œ μ „λ‹¬ν•˜λŠ” 데 도움이 됨.
    • μ˜μ‘΄μ„± μ£Όμž…μ—μ„œλ„ λ§ˆμ°¬κ°€μ§€λ‘œ, μ£Όμž…λœ 객체가 λ³€κ²½λ˜μ§€ μ•Šμ„ κ²ƒμž„μ„ λͺ…μ‹œμ μœΌλ‘œ λ‚˜νƒ€λ‚Ό 수 있음 

λ”°λΌμ„œ, μ˜μ‘΄μ„± μ£Όμž…μ—μ„œ final ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜λŠ” 것은 객체의 λΆˆλ³€μ„±, μ•ˆμ •μ„±, 가독성을 보μž₯ν•  수 μžˆλ‹€.

728x90