λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
Spring

IOC μ»¨ν…Œμ΄λ„ˆ

by λ„μΊλ¦¬πŸ± 2022. 8. 23.
λ°˜μ‘ν˜•

# IOC μ»¨ν…Œμ΄λ„ˆ

μŠ€ν”„λ§ 기반이 λ˜λŠ” μ€‘μš”ν•œ κ°œλ…

 

IOC =  Inversion Of Control

= μ œμ–΄μ—­μ „

객체 생성뢀터, κ°’ μ„ΈνŒ… 등을 κ°œλ°œμžκ°€ λͺ¨λ‘ μ½”λ“œλ‘œ λ§Œλ“€μ–΄μ„œ μž‘μ„±μ„ ν•˜κ³€ ν–ˆλŠ”λ°, μ œμ–΄μ—­μ „μ΄λž€ κ°œλ°œμžκ°€ λͺ‡κ°€μ§€ μ€‘μš”ν•œ κ²ƒλ§Œ μ„ΈνŒ…ν•˜λ©΄, ν”„λ ˆμž„ μ›Œν¬κ°€ ν•΄λ‹Ή 데이터λ₯Ό λΆ„μ„ν•΄μ„œ μ½”λ“œκ°€ μ–΄λ–»κ²Œ λ™μž‘ν•΄μ•Ό ν•˜λŠ”μ§€λ₯Ό ν”„λ ˆμž„ μ›Œν¬κ°€ μˆ˜ν–‰ν•˜λŠ” 것을 의미 ν•œλ‹€.

이게 μ™œ κ°€λŠ₯? μž‘μ—…μ΄ λ°˜λ³΅λ˜λŠ” κ²½μš°κ°€ λ§Žμ•„μ„œ 이것을 ν”„λ ˆμž„μ›Œν¬μ— μ •μ˜λ₯Ό ν•΄λ‘” 것 정도라고 생각할 수 μžˆλ‹€.

 

POJO 클래슀

= POJO = Plain Old Java Object

μžλ°” λͺ¨λΈμ΄λ‚˜ κΈ°λŠ₯, ν”„λ ˆμž„ μ›Œν¬λ₯Ό λ”°λ₯΄μ§€ μ•Šκ³  ν™€λ‘œ 독립적이며 λ‹¨μˆœν•œ κΈ°λŠ₯을 가진 객체 이닀.

μžλ°”μ—μ„œλŠ” 이런 객체λ₯Ό BEAN이라고 λΆ€λ₯Έλ‹€.

POPO(PHP), POCO(λ‹·λ„· ν”„λ ˆμž„μ›Œν¬), PODS(C++), POD(Pear)

μŠ€ν”„λ§μ—μ„œ ν•΅μ‹¬μ μœΌλ‘œ μ‚¬μš©ν•˜λŠ”κ²Œ λ°”λ‘œ 이 Java Bean으둜 (= Pojo클래슀), μ–΄λ–€ λ³€μˆ˜λ“€μ΄ μ„ μ–Έλ˜μ–΄μžˆκ³  μ–΄λ–€ 값을 λ„£λ‹€ λΊ„ 수 μžˆλŠ” 것을 μ˜λ―Έν•œλ‹€. 

 

The Spring Container(IOC Container)κ°€ μ„€μ •ν•œ 정보λ₯Ό μ½μ–΄μ™€μ„œ κ·Έ 정보λ₯Ό ν† λŒ€λ‘œ 클래슀λ₯Ό 가지고 객체λ₯Ό λ§Œλ“€μ–΄μ„œ κ·Έ 객체λ₯Ό μ‚¬μš©ν•  수 μžˆλ„λ‘ λ°˜ν™˜ν•˜λ„λ‘ λ˜μ–΄μžˆλŠ” 것을 IOC μ»¨ν…Œμ΄λ„ˆλΌκ³  ν•œλ‹€.

 

IOC μ»¨ν…Œμ΄λ„ˆ μ’…λ₯˜

- bean factory(μ˜› 버전)

- application context (ν˜„μž¬ 버전)

ν”Œμ μ— λ”°λΌμ„œ μ–΄λ–€ 버전을 μ“Έ 지 λͺ¨λ₯Έλ‹€. μ˜› 버전을 μ“°λŠ” κ²½μš°λ„ λ”λŸ¬ μžˆμ–΄μ„œ λ‘˜ λ‹€ μ•Œκ³  μžˆλŠ” 것이 ν•„μš”ν•˜λ‹€. 

 

  1. bean factory

: 객체λ₯Ό μƒμ„±ν•˜κ³  μ „λ‹¬ν•˜κ³ , 상속 관계λ₯Ό μ„ΈνŒ…ν•  수 μžˆλŠ” 것이닀.

 

  1. application context

: 객체λ₯Ό μƒμ„±ν•˜κ³  μ „λ‹¬ν•˜κ³ , 상속 관계λ₯Ό μ„ΈνŒ…ν•  수 μžˆλŠ” 것이닀. 

λ˜ν•œ, κ΅­μ œν™” 지원등 λ¬Έμžμ™ κ΄€λ ¨λœ 지원, 이벀트 처리, 객체 생성에 λŒ€ν•΄ μ—¬λŸ¬ 가지λ₯Ό μ œμ–΄ν•  수 μžˆλ‹€. 

 

 




λ°˜μ‘ν˜•

λŒ“κΈ€