๐ฑ ํด๋ฆญ! | ์ฌ์ง ์ถ์ฒ : 'ํ์ '์ ๋ค์ด๋ฒ ๋ธ๋ก๊ทธ 2018๋
์์ฑ๋ ๊ฒ์๊ธ '์ค๋ํผ ๋ช
๋์ฌ ์งค ๋ชจ์์ง โค :: ์์ดํฐ ๋ฐฐ๊ฒฝํ๋ฉด ์ค๋ํผ ์์งค'
![](https://velog.velcdn.com/images%2Fon-n-on-turtle%2Fpost%2F8c60e0ea-d567-4c59-9246-a1f8f317d292%2F%EC%8A%A4%ED%81%AC%EB%A6%B0%EC%83%B7(220).png)
![](https://velog.velcdn.com/images%2Fon-n-on-turtle%2Fpost%2Fda0d4b4f-f316-4649-be8c-200287875264%2F20210611_100912.jpg)
![](https://velog.velcdn.com/images%2Fon-n-on-turtle%2Fpost%2F7a3495d3-51f8-479c-93be-ee41167b22a9%2F61977_61300_429%20-%20%EB%B3%B5%EC%82%AC%EB%B3%B8.jpg)
![](https://velog.velcdn.com/images%2Fon-n-on-turtle%2Fpost%2F47a5a718-8806-43da-8450-09fb21152397%2F%EB%8F%84%ED%9D%A0%EC%A8%A9%20%EC%82%AC%EC%A7%842.jpg)
๐น 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์คํผ์ปค ๐ ์ฐํผ
![](https://velog.velcdn.com/images%2Fon-n-on-turtle%2Fpost%2Fa4495eeb-ad41-439e-9740-e4d3ee8d1494%2F%EC%8A%A4%ED%81%AC%EB%A6%B0%EC%83%B7(155).png)
![](https://velog.velcdn.com/images%2Fon-n-on-turtle%2Fpost%2F6a2499fc-7e94-4a4e-ae2c-01d52a50afb5%2F%EC%A0%9C%EB%AA%A9%20%EC%97%86%EC%9D%8C.png)
![](https://velog.velcdn.com/images%2Fon-n-on-turtle%2Fpost%2Fe1159b65-b6ed-4e0e-be59-1e7a240892d5%2F%EC%8A%A4%ED%81%AC%EB%A6%B0%EC%83%B7(156).png)
LGTV ๐ H์คํผ์ปค ๐ ์ฐํผ
ย ย ย ย ย ๐กโ ์ด๊ฒ์ ๋ฐ๋๋ก ํ์ ๐๐ ๐ฅโ IOC
ํ์
IOC
์ IDEA๐ญ : new
ํ๋ ๊ฒ์ ์ง์ ํ์ง ๋ง๊ณ ์ธ๋ถ์์ ๋ง๋ค์
- ์ธ๋ถ์์ a์ฐํผ๋ ๊ฐ์ฒดํํ๊ณ H์คํผ์ปค๋ ๊ฐ์ฒดํํ์
- ์ธ๋ถ์์ ์ฐํผ, ์คํผ์ปค, ํฐ๋น ๊ฐ์ฒด๋ฅผ ๋ค ๋ง๋ค์ด์.
์ฐํผ์ ์ฃผ์๊ฐ์ ์คํผ์ปค์ ๋ฃ์ด์ค์. ๐ ์คํผ์ปค์ ์ฃผ์๊ฐ์ ํฐ๋น์ ๋ฃ์ด์ค์. ๐ ์ด๊ฒ์ด ๋ฐ๋ก ๐ฅโ DI
![](https://velog.velcdn.com/images%2Fon-n-on-turtle%2Fpost%2F06bf92b6-87e5-4198-8b94-78748ce49054%2F%EC%8A%A4%ED%81%AC%EB%A6%B0%EC%83%B7(157).png)
- >
IOC
: ํ๋ฆ์ ๋ฐ๋๋ก ํ๋ค.
DI
: ์ธ๋ถ์์ ๊ฐ์ฒด๋ฅผ ๋ฃ์ด์ค๋ค.
- ์ธ๋ถ
=
์คํ๋ง
xml
: ์คํ๋ง์ ์ ๊ฐ์ฒดํ ํ ๊ฑฐ ์ํํ
๋ฃ์ด์ค~!
IOC
๋ ๊ทธ๋ฌํ ๊ฐ๋
์ด์์.
IOC์ปจํ
์ด๋
๋ ๊ทธ๋ฅ ์คํ๋ง ๊ทธ ์์ฒด์์. ์คํ๋ง์ด IOC
๋ผ๋ ๊ฐ๋
์ ์คํํ ์์ผ์ฃผ๋๊น์.
- ์ปจํ
์ด๋ ๋์ค๋ฉด ์คํ๋ง์ ๊ฐ๋ฆฌํค๋ ๊ฒ์ด์์.
์คํ๋ง ์ปจํ
์ด๋
, IOC์ปจํ
์ด๋
, ์ปจํ
์คํธ ์ปจํ
์ด๋
๋ฑ๋ฑ ์คํ๋ง์ ๊ฐ๋ฆฌํค๋ ..์ปจํ
์ด๋๋ผ๊ณ ๋๋๋ ๋จ์ด๋ค์ด ๋ง์์.
๐น DI
Bean
vs
DI
- ๋น๋ฑ๋ก ๋ ๊ฒ์ ๋ฃ์ด์ฃผ๋ฉด(์จ์ฃผ๋ฉด) ๊ทธ๊ฒ์ด ๋ฐ๋ก DI
- ๋น๋ฑ๋ก์ด DI๊ฐ ์๋์์~โ ๏ธ
DI
ํ ๋ ๋ฃ์ ์ ์๋ ๊ฐ์ฒด๊ฐ ํ๊ฐ๋ ์๋ค๋ฉด ERRORโ
- ๋๊ฐ์ฌ๋
ERRORโ
- ๊ทธ๋ฐ์์ผ๋ก ๋ฃ์ ์ ์๋ ๊ฐ์ฒด๊ฐ ๋ง์ ๊ฒฝ์ฐ๋
xml
์ ์ด์ฉํด์ ์ ํด์ค๋ค.
xml
์์ ๊ฐ์ฒดํ๋ฅผ ํ๊ณ (bean
๋ฑ๋ก์ด ๋ผ์) ๊ทธ๋ฆฌ๊ณ setter
๋ง๋ค์ด์ ๊ฑฐ๊ธฐ์ property
์ด์ฉํด์ ๊ฐ์ ๋ฐ์ด๋ฃ์ด์ฃผ๋ ๊ฑฐ์์.
xml
ํ์ผ์ ์ฌ ์ปดํ์ผ์ด ํ์์์ด์ ์์ค ์์ ์ด ์๋๊ฒ๋ ๋์์ฃผ๋ ๊ฒ์ด์์.
![](https://velog.velcdn.com/images%2Fon-n-on-turtle%2Fpost%2F514f369b-67cd-43a2-83c2-49a981a24658%2F%EC%8A%A4%ED%81%AC%EB%A6%B0%EC%83%B7(158).png)
![](https://velog.velcdn.com/images%2Fon-n-on-turtle%2Fpost%2F83192869-3b2b-4054-a4e5-35b10229abe1%2F%EC%8A%A4%ED%81%AC%EB%A6%B0%EC%83%B7(159).png)
๐ ๐bean๋ฑ๋ก(์ด๋
ธํ
์ด์
) ๐IOC ๐DI ๐กxml
๐ด SPRING์ ํ๋ฆ์ด ์ด๋ ๊ฒ ํ๋ฌ๊ฐ๋ ๊ฑฐ์ฃ ~^^
๐ด bean๋ฑ๋ก์ ์ํด? DIํ ๋ ค๊ณ ~!
๐ด DI ์ ํด? ๋์ค์ ๋ฐ๊ฟ์น๊ธฐ ์ฝ๊ฒ ํ ๋ ค๊ณ ~!