λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
πŸš€ Backend

[Spring Basic] IoC와 DI

by dev.py 2024. 1. 18.

https://www.inflearn.com/course/μŠ€ν”„λ§-핡심-원리-기본편

IoC - μ œμ–΄μ˜ μ—­μ „

  • κΈ°μ‘΄ ν”„λ‘œκ·Έλž¨λ“€μ€ 개발자의 μ˜μ§€μ— 따라 κ΅¬ν˜„ 객체λ₯Ό μƒμ„±ν•˜κ³ , μ—°κ²°ν•˜κ³  μ‹€ν–‰ν–ˆλ‹€.
  • 즉 ν”„λ‘œκ·Έλž¨μ˜ μ œμ–΄ 흐름을 κ°œλ°œμžκ°€ 직접 μ‘°μ’…ν–ˆλ‹€. 
  • ν•˜μ§€λ§Œ μŠ€ν”„λ§μ—μ„  ν•΄λ‹Ή 객체의 생성과 μ—°κ²°, 싀행을 κ°œλ°œμžκ°€ μ•„λ‹Œ μŠ€ν”„λ§μ΄ λ‹΄λ‹Ήν•œλ‹€.

ν”„λ ˆμž„ μ›Œν¬ vs 라이브러리

  • ν”„λ ˆμž„μ›Œν¬λŠ” λ‚΄κ°€ μž‘μ„±ν•œ μ½”λ“œλ₯Ό μ œμ–΄ν•˜κ³ , λŒ€μ‹  μ‹€ν–‰ν•˜λ©΄ ν”„λ ˆμž„μ›Œν¬
  • λ‚΄κ°€ μž‘μ„±ν•œ μ½”λ“œλ₯Ό 직접 μ œμ–΄μ˜ 흐름을 μ œμ–΄ν•˜λ©΄ 라이브러리

https://docs.spring.io/spring-framework/docs/3.2.x/spring-framework-reference/html/beans.html - μŠ€ν”„λ§ 곡식 Doc 그림은 정말 λͺ»μƒκ²Όλ‹€. 3.2x λž‘ 6.1.x λž‘ 그림이 κ°™λ‹€.

μœ„μ˜ 그림처럼 λ‚˜μ˜ λΉ„μ¦ˆλ‹ˆμŠ€ 였브젝트(λ‚΄κ°€ κ΅¬ν˜„ν•œ 객체)와 Configuration 메타 데이터λ₯Ό 가지고 μŠ€ν”„λ§ 이리저리 μ§¬λ½•ν•΄μ„œ

μŠ€ν”„λ§ μ„œλ²„κ°€ μƒμ„±λœλ‹€.


DI - μ˜μ‘΄κ΄€κ³„ μ£Όμž…

μŠ€ν”„λ§μ΄ DIλ₯Ό ν•˜λŠ” λ°©λ²•μ—λŠ” λ„€ 가지가 μžˆλ‹€.

  1. ⭐️ μƒμ„±μž μ£Όμž… ⭐️
  2. Setter μ£Όμž…
  3. ν•„λ“œ μ£Όμž…
  4. 일반 λ©”μ„œλ“œ μ£Όμž…

 

μƒμ„±μž μ£Όμž…

  • μƒμ„±μž 호좜 μ‹œμ μ— λ”± 1번만 ν˜ΈμΆœλ˜λŠ”κ²Œ 보μž₯이 λœλ‹€.
  • λΆˆλ³€, ν•„μˆ˜ 의쑴 관계에 μ‚¬μš©

 

Setter μ£Όμž…

  • 선택, λ³€κ²½ κ°€λŠ₯성이 μžˆλŠ” 의쑴 관계에 μ‚¬μš©(λ‚˜μ€‘μ— λ°”κΏ€ 수 μžˆμœΌλ‹ˆ)
  • μžλ°”λΉˆ ν”„λ‘œνΌν‹° κ·œμ•½μ˜ μˆ˜μ •μž λ©”μ„œλ“œ 방식을 μ‚¬μš©ν•˜λŠ” 방법

ν•„λ“œ μ£Όμž…

@Autowired private MemberRepository memberRepository;
@Autowired private DiscountPolicy discountPolicy;

μ˜›λ‚ μ— 많이 썼닀. μ“°μ§€λ§μž

일반 λ©”μ„œλ“œ μ£Όμž…

  • ν•œλ²ˆμ— μ—¬λŸ¬ ν•„λ“œμ„ μ£Όμž… ν•  수 μžˆλ‹€.
  • 쓰지 말자

 

-> μ–΄μ°¨ν”Ό @Autowired λ“±μ˜ μ»΄ν¬λ„ŒνŠΈ μŠ€μΊ”μ„ μ‚¬μš©ν•˜λ©΄ μƒμ„±μž μ£Όμž… νŽΈν•˜κΈ°λ„ ν•˜κ³  μ•ˆμ „ν•˜λ‹€.

 

λ‹€μŒ κ°•μ˜ λ‚΄μš©μ„ 기반으둜 μ •λ¦¬ν–ˆμŠ΅λ‹ˆλ‹€.
https://www.inflearn.com/course/μŠ€ν”„λ§-핡심-원리-기본편