πŸ€” IoC μ»¨ν…Œμ΄λ„ˆλž€?

κΉ€μ„±κΈΈΒ·2023λ…„ 3μ›” 31일
0

기술 λ©΄μ ‘ μ€€λΉ„

λͺ©λ‘ 보기
1/7

IoC μ»¨ν…Œμ΄λ„ˆλž€ μžλ°” 객체의 라이프 사이클을 μ±…μž„μ§€κ³  μ˜μ‘΄μ„±μ„ κ΄€λ¦¬ν•΄μ£ΌλŠ” μ»¨ν…Œμ΄λ„ˆ 이닀.

μ™œ μ‚¬μš©ν•˜λŠ”λ°?

IoC μ»¨ν…Œμ΄λ„ˆλ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄ κ°œλ°œμžκ°€ ν•„μš”ν•œ 객체가 μžˆμ„λ•Œλ§ˆλ‹€ New ν‚€μ›Œλ“œλ‘œ 생성을 할것인데, IoC μ»¨ν…Œμ΄λ„ˆλ₯Ό μ‚¬μš©ν•œλ‹€λ©΄ κ°œλ°œμžκ°€ ν•„μš”ν•œ 객체λ₯Ό IoC μ»¨ν…Œμ΄λ„ˆκ°€ μ œκ³΅μ„ ν•΄μ€˜ κ°œλ°œμžλŠ” λΉ„μ§€λ‹ˆμŠ€ λ‘œμ§μ— 집쀑 ν•  수 μžˆλ‹€. 객체 생성 μ½”λ“œλ„ μ—†μœΌλ―€λ‘œ TDD에도 μš©μ΄ν•˜λ‹€.

Bean Factory, Application Context

μŠ€ν”„λ§ μ»¨ν…Œμ΄λ„ˆλŠ” 두가지가 μžˆλ‹€. Bean Factory와 Bean Factoryλ₯Ό μƒμ†ν•˜λŠ” Application Context이닀.

  1. Bean Factory

  • μŠ€ν”„λ§ μ»¨ν…Œμ΄λ„ˆμ˜ μ΅œμƒμœ„ μΈν„°νŽ˜μ΄μŠ€μ΄λ‹€.
  • νŒ©ν† λ¦¬ λ””μžμΈμ„ κ΅¬ν˜„ν•œ κ²ƒμœΌλ‘œ, Bean을 관리, 생성, 쑰회 역할을 ν•œλ‹€.
  • getBean() λ©”μ„œλ“œλ₯Ό μ œκ³΅ν•œλ‹€.
  • μ»¨ν…Œμ΄λ„ˆκ°€ ꡬ동될 λ•Œ Bean을 μƒμ„±ν•˜λŠ”κ²Œ μ•„λ‹Œ ν•„μš”ν• λ•Œ μš”μ²­μ— μ˜ν•΄μ„œ μ‚¬μš© μ‹œμ μ— Bean이 μƒμ„±λ˜λŠ” μ§€μ—°λ‘œλ”©(Lazy Loading) 방식을 μ‚¬μš©ν•œλ‹€.
  1. Application Context

  • Bean Factory의 κΈ°λŠ₯을 λͺ¨λ‘ 상속 λ°›μ•„μ„œ μ œκ³΅ν•œλ‹€.
  • Bean Factory와 달리 μ»¨ν…Œμ΄λ„ˆκ°€ κ΅¬λ™λ λ•Œ Bean을 μƒμ„±ν•˜λŠ” μ‚¬μ „λ‘œλ”©(Pre Loading) 방식이 μ‚¬μš©λœλ‹€.
  • Bean Factory보닀 더 λ‹€μ–‘ν•œ κΈ°λŠ₯을 μ œκ³΅ν•œλ‹€.
  • MessageSource 메세지 μ†ŒμŠ€λ₯Ό ν™œμš©ν•œ κ΅­μ œν™” κΈ°λŠ₯ -> ν•œκ΅­μ—μ„œ λ“€μ–΄μ˜€λ©΄ ν•œκ΅­μ–΄, μ˜μ–΄λ‘œ λ“€μ–΄μ˜€λ©΄ μ˜μ–΄λ‘œ λ²ˆμ—­ν•΄μ€€λ‹€.
  • EnvironmentCapable ν™˜κ²½λ³€μˆ˜ -> 둜컬, 개발, 운영 ν™˜κ²½λ³€μˆ˜λ“€μ„ κ΅¬λΆ„ν•΄μ„œ 처리 ν•œλ‹€.
  • ApplicationEventPublisher μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜ 이벀트 -> 이벀트λ₯Ό λ°œν–‰ν•˜κ³  κ΅¬λ…ν•˜λŠ” λͺ¨λΈμ„ νŽΈλ¦¬ν•˜κ²Œ μ§€μ›ν•œλ‹€.
  • ResourceLoader νŽΈλ¦¬ν•œ λ¦¬μ†Œκ·Έ 쑰회 -> 파일, 클래슀 패슀, μ™ΈλΆ€ λ“±μ—μ„œ λ¦¬μ†ŒμŠ€λ₯Ό νŽΈλ¦¬ν•˜κ²Œ 쑰회 ν•œλ‹€.
  • μš”μ¦˜μ€ Bean Factoryλ₯Ό 직접 μ‚¬μš©ν•˜μ§€ μ•Šκ³ , λΆ€κ³Ό κΈ°λŠ₯이 μΆ”κ°€λœ Application Contextλ₯Ό μ‚¬μš©ν•œλ‹€κ³  ν•œλ‹€.

0개의 λŒ“κΈ€