IoC(Inversion of Control), DI(Dependency Injection)
Last updated
Last updated
IoC
์ ์ด ์ญ์ ์ ์์น, ๋์ ํด์ค๋ค
DI
์์กด์ฑ ์ฃผ์
, ๋์ ๋ฃ์ด์ค๋ค
๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ํ ๊ตฌ์กฐ์ฒด๋ก ์๋ฐ ๋น ๊ท์ฝ์ ๋ฐ๋ฅด๋ ๊ตฌ์กฐ์ฒด.
private ํ๋กํผํฐ์ getter/setter ๋ก๋ง ๋ฐ์ดํฐ๋ฅผ ์ ๊ทผํ๋ค.
์ธ์๊ฐ (argument) ์๋ ๊ธฐ๋ณธ ์์ฑ์๊ฐ ์๋ค.
์คํ๋ง IoC ์ปจํ ์ด๋์ ์ํด ์์ฑ๋๊ณ ๊ด๋ฆฌ๋๋ ๊ฐ์ฒด.
์๋ฐ์์์ฒ๋ผ new Object(); ๋ก ์์ฑํ์ง ์๋๋ค.
๊ฐ๊ฐ์ Bean ๋ค ๋ผ๋ฆฌ๋ ์๋ก๋ฅผ ํธ๋ฆฌํ๊ฒ ์์กด (์ฌ์ฉ) ํ ์ ์์.
ApplicationContext ์ธํฐํ์ด์ค๋ฅผ ํตํด ์ ๊ณต๋๋ ์คํ๋ง ์ปจํ ์ด๋๋ Bean ๊ฐ์ฒด์ ์์ฑ ๋ฐ Bean ๋ค์ ์กฐ๋ฆฝ์ ๋ด๋น (์ํธ ์์กด์ฑ ๊ด๋ฆฌ)
๊ณผ๊ฑฐ์๋ xml ๋ก ์ค์ ์ ๋ฐ๋ก ๊ด๋ฆฌํ์ฌ ๋ฑ๋ก (๋ถํธ)
ํ์ฌ๋ annotation ๊ธฐ๋ฐ์ผ๋ก Bean ๋ฑ๋ก
@Bean, @Controller, @Service
Class ๊ฒฝ๋ก
Bean naming
๊ธฐ๋ณธ์ ์ผ๋ก๋ ์ Class ์ด๋ฆ์์ ์ฒซ ๋ฌธ์๋ง ์๋ฌธ์๋ก ๋ณ๊ฒฝ โ accountService, userDao
์ํ๋ ๊ฒฝ์ฐ ๋ณ๊ฒฝ ๊ฐ๋ฅ
Scope
Bean ์ ์์ฑํ๋ ๊ท์น
singleton
default ๊ฐ์ผ๋ก ์ปจํ
์ด๋์ ๋จ์ผ๋ก ์์ฑ
prototype
์์
์๋ง๋ค Bean์ ์๋ก ์์ฑํ๊ณ ์ถ์ ๊ฒฝ์ฐ
request
http ์์ฒญ๋ง๋ค ์๋กญ๊ฒ Bean์ ์์ฑํ๊ณ ์ถ์ ๊ฒฝ์ฐ
callback : ์ด๋ค ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ ํธ์ถ๋๋ ๋ฉ์๋
lifecycle callback
Bean์ ์์ฑํ๊ณ ์ด๊ธฐํํ๊ณ ํ๊ดดํ๋ ๋ฑ ํน์ ์์ ์ ํธ์ถ๋๋๋ก ์ ์๋ ํจ์
์ฃผ๋ก ๋ง์ด ์ฌ์ฉ๋๋ ์ฝ๋ฐฑ
@PostConstruct
๋น ์์ฑ ์์ ์ ํ์ํ ์์
์ ์ํ
@PreDestroy
๋น ํ๊ดด(์ฃผ๋ก ์ดํ๋ฆฌ์ผ์ด์
์ข
๋ฃ) ์์ ์ ํ์ํ ์์
์ ์ํ