๐ฑ ํด๋ฆญ! | ์ฌ์ง ์ถ์ฒ : 'ํ์ '์ ๋ค์ด๋ฒ ๋ธ๋ก๊ทธ 2018๋
์์ฑ๋ ๊ฒ์๊ธ '์ค๋ํผ ๋ช
๋์ฌ ์งค ๋ชจ์์ง โค :: ์์ดํฐ ๋ฐฐ๊ฒฝํ๋ฉด ์ค๋ํผ ์์งค'
๐น MVC
- ๊ฐ๋ฐ์ ํ ๋ ํ์ผ๋ค์ ์ด๋ป๊ฒ ๋๋๊น ํ๋ ๋ฐฉ๋ฒ๋ก
model
:
dao
: mapper.interface, mapper.xml
, vo
, dto
, domain
controller
:
controller ( servlet์ญํ , ์ฃผ์๋งคํ๊น์ง๋ง )
, service ( ๋ก์ง )
view
: jsp
๐น Bean
Bean
๋ฑ๋ก =
@
์ด๋
ธํ
์ด์
- ๋ฉ์๋์ ๋ฉค๋ฒํ๋์ ํด๋์ค ์์ ์ด๋
ธํ
์ด์
์ ์จ์.
- ex :
@Controller
, @Service
Bean
๋ฑ๋ก์ ํ๋ค๋ฉด ๋ ์ด์ new
๋ก ๊ฐ์ฒด ์์ฑํ์ง ์์๋ ๋ผ์. ์คํ๋ง์ด ๊ฐ์ฒด ๋ฑ๋ก์ ํด์ฃผ๋๊น์.
- ํด๋์ค๋ฅผ ๊ฐ์ฒดํํ์ฌ
spring
์ด ๊ทธ ์ฃผ์๊ฐ๋ค์ ๊ฐ์ง๊ณ ์๊ณ ์์ฒญํ ๋ ๋ง๋ค ๊ฐ์ ธ๋ค ์ค์.
๐น IOC
IOC
๋ฅผ ์ดํด ํด์ผ ์คํ๋ง์ด ์ดํด๊ฐ ๋ผ์.
- ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด์
- ํด๋์ค๋ค๋ง๋ค ๊ด๊ณ๊ฐ ์์ฃ ?
- a๊ฐ์ฒด์ b๊ฐ์ฒด๊ฐ
is๊ด๊ณ
์ด๋ฉด ์์๊ด๊ณ
์์.
- a๊ฐ์ฒด์ b๊ฐ์ฒด๊ฐ
has๊ด๊ณ
์ด๋ฉด ํฌํจ๊ด๊ณ
์์. ๐ IOC
>
- a(Tv) B(LGTV) ๐ LGTV is TV ๐ is a ๐ ์์
- LGTV์์ ์คํผ์ปค๊ฐ ํ์ํด์ ์ธ๋ถ์์ ๋ง๋ ์คํผ์ปค๋ฅผ ์ฌ์ฉํ๋ค๋ฉด์?
- a(Haman Speaker) b(LGTV) ๐ LGTV has Haman Speaker ๐ has a ๐ ํฌํจ๊ด๊ณ ๐ ์ด ๋
IOC
๊ฐ ์ค์ํด์
- LGTV๋ Haman Speaker๊ฐ์ฒด๊ฐ ํ์ํด์.
JAVA
์์๋ LGTVํด๋์ค ์์์ H์คํผ์ปค์ ๊ฐ์ฒด๋ฅผ new
๋ก ๋ง๋ค์์ด์.
- LGTV โก H์คํผ์ปค : ์ ๋ฐฉํฅ
- H์คํผ์ปค๋ ์ฐํผ๊ฐ์ฒด๊ฐ ํ์ํด์.
- b(์ฐํผ1) c(์ฐํผ2) ๐ a(Haman Speaker) ๐ H์คํผ์ปค has b์ฐํผ ๐ ํฌํจ๊ด๊ณ
- LGTV ๐ H์คํผ์ปค ๐ ์ฐํผ
LGTV ๐ H์คํผ์ปค ๐ ์ฐํผ
ย ย ย ย ย ๐กโ ์ด๊ฒ์ ๋ฐ๋๋ก ํ์ ๐๐ ๐ฅโ IOC
ํ์
IOC
์ IDEA๐ญ : new
ํ๋ ๊ฒ์ ์ง์ ํ์ง ๋ง๊ณ ์ธ๋ถ์์ ๋ง๋ค์
- ์ธ๋ถ์์ a์ฐํผ๋ ๊ฐ์ฒดํํ๊ณ H์คํผ์ปค๋ ๊ฐ์ฒดํํ์
- ์ธ๋ถ์์ ์ฐํผ, ์คํผ์ปค, ํฐ๋น ๊ฐ์ฒด๋ฅผ ๋ค ๋ง๋ค์ด์.
์ฐํผ์ ์ฃผ์๊ฐ์ ์คํผ์ปค์ ๋ฃ์ด์ค์. ๐ ์คํผ์ปค์ ์ฃผ์๊ฐ์ ํฐ๋น์ ๋ฃ์ด์ค์. ๐ ์ด๊ฒ์ด ๋ฐ๋ก ๐ฅโ DI
- >
IOC
: ํ๋ฆ์ ๋ฐ๋๋ก ํ๋ค.
DI
: ์ธ๋ถ์์ ๊ฐ์ฒด๋ฅผ ๋ฃ์ด์ค๋ค.
- ์ธ๋ถ
=
์คํ๋ง
xml
: ์คํ๋ง์ ์ ๊ฐ์ฒดํ ํ ๊ฑฐ ์ํํ
๋ฃ์ด์ค~!
IOC
๋ ๊ทธ๋ฌํ ๊ฐ๋
์ด์์.
IOC์ปจํ
์ด๋
๋ ๊ทธ๋ฅ ์คํ๋ง ๊ทธ ์์ฒด์์. ์คํ๋ง์ด IOC
๋ผ๋ ๊ฐ๋
์ ์คํํ ์์ผ์ฃผ๋๊น์.
- ์ปจํ
์ด๋ ๋์ค๋ฉด ์คํ๋ง์ ๊ฐ๋ฆฌํค๋ ๊ฒ์ด์์.
์คํ๋ง ์ปจํ
์ด๋
, IOC์ปจํ
์ด๋
, ์ปจํ
์คํธ ์ปจํ
์ด๋
๋ฑ๋ฑ ์คํ๋ง์ ๊ฐ๋ฆฌํค๋ ..์ปจํ
์ด๋๋ผ๊ณ ๋๋๋ ๋จ์ด๋ค์ด ๋ง์์.
๐น DI
Bean
vs
DI
- ๋น๋ฑ๋ก ๋ ๊ฒ์ ๋ฃ์ด์ฃผ๋ฉด(์จ์ฃผ๋ฉด) ๊ทธ๊ฒ์ด ๋ฐ๋ก DI
- ๋น๋ฑ๋ก์ด DI๊ฐ ์๋์์~โ ๏ธ
DI
ํ ๋ ๋ฃ์ ์ ์๋ ๊ฐ์ฒด๊ฐ ํ๊ฐ๋ ์๋ค๋ฉด ERRORโ
- ๋๊ฐ์ฌ๋
ERRORโ
- ๊ทธ๋ฐ์์ผ๋ก ๋ฃ์ ์ ์๋ ๊ฐ์ฒด๊ฐ ๋ง์ ๊ฒฝ์ฐ๋
xml
์ ์ด์ฉํด์ ์ ํด์ค๋ค.
xml
์์ ๊ฐ์ฒดํ๋ฅผ ํ๊ณ (bean
๋ฑ๋ก์ด ๋ผ์) ๊ทธ๋ฆฌ๊ณ setter
๋ง๋ค์ด์ ๊ฑฐ๊ธฐ์ property
์ด์ฉํด์ ๊ฐ์ ๋ฐ์ด๋ฃ์ด์ฃผ๋ ๊ฑฐ์์.
xml
ํ์ผ์ ์ฌ ์ปดํ์ผ์ด ํ์์์ด์ ์์ค ์์ ์ด ์๋๊ฒ๋ ๋์์ฃผ๋ ๊ฒ์ด์์.
๐ ๐bean๋ฑ๋ก(์ด๋
ธํ
์ด์
) ๐IOC ๐DI ๐กxml
๐ด SPRING์ ํ๋ฆ์ด ์ด๋ ๊ฒ ํ๋ฌ๊ฐ๋ ๊ฑฐ์ฃ ~^^
๐ด bean๋ฑ๋ก์ ์ํด? DIํ ๋ ค๊ณ ~!
๐ด DI ์ ํด? ๋์ค์ ๋ฐ๊ฟ์น๊ธฐ ์ฝ๊ฒ ํ ๋ ค๊ณ ~!