๐ฑDI(Dependency Injection)
DI(Dependency Injection)๋ ์คํ๋ง์ด ๋ค๋ฅธ ํ๋ ์์ํฌ์ ์ฐจ๋ณํ๋์ด ์ ๊ณตํ๋ ์์กด ๊ด๊ณ ์ฃผ์
๊ธฐ๋ฅ์ผ๋ก,
๊ฐ์ฒด๋ฅผ ์ง์ ์์ฑํ๋ ๊ฒ ์๋๋ผ ์ธ๋ถ์์ ์์ฑํ ํ ์ฃผ์
์์ผ์ฃผ๋ ๋ฐฉ์์ด๋ค.
DI(์์กด์ฑ ์ฃผ์ )๋ฅผ ํตํด์ ๋ชจ๋ ๊ฐ์ ๊ฒฐํฉ๋๊ฐ ๋ฎ์์ง๊ณ ์ ์ฐ์ฑ์ด ๋์์ง๋ค.
- ์ฒซ๋ฒ์งธ ๋ฐฉ๋ฒ์ A๊ฐ์ฒด๊ฐ B์ C๊ฐ์ฒด๋ฅผ New ์์ฑ์๋ฅผ ํตํด์ ์ง์ ์์ฑํ๋ ๋ฐฉ๋ฒ์ด๊ณ ,
- ๋๋ฒ์งธ ๋ฐฉ๋ฒ์ ์ธ๋ถ์์ ์์ฑ ๋ ๊ฐ์ฒด๋ฅผ setter()๋ฅผ ํตํด ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด๋ค.
์ด๋ฌํ ๋๋ฒ์งธ ๋ฐฉ์์ด ์์กด์ฑ ์ฃผ์ ์ ์์์ธ๋ฐ,
A ๊ฐ์ฒด์์ B, C๊ฐ์ฒด๋ฅผ ์ฌ์ฉ(์์กด)ํ ๋ A ๊ฐ์ฒด์์ ์ง์ ์์ฑ ํ๋ ๊ฒ์ด ์๋๋ผ
์ธ๋ถ(IOC์ปจํ ์ด๋)์์ ์์ฑ๋ B, C๊ฐ์ฒด๋ฅผ ์กฐ๋ฆฝ(์ฃผ์ )์์ผ setter ํน์ ์์ฑ์๋ฅผ ํตํด ์ฌ์ฉํ๋ ๋ฐฉ์์ด๋ค.
์คํ๋ง์์๋ ๊ฐ์ฒด๋ฅผ Bean์ด๋ผ๊ณ ๋ถ๋ฅด๋ฉฐ,
ํ๋ก์ ํธ๊ฐ ์คํ๋ ๋ ์ฌ์ฉ์๊ฐ Bean์ผ๋ก ๊ด๋ฆฌํ๋ ๊ฐ์ฒด๋ค์ ์์ฑ๊ณผ ์๋ฉธ์ ๊ด๋ จ๋ ์์ ์ ์๋์ ์ผ๋ก ์ํํด์ฃผ๋๋ฐ
๊ฐ์ฒด๊ฐ ์์ฑ๋๋ ๊ณณ์ ์คํ๋ง์์๋ Bean ์ปจํ ์ด๋๋ผ๊ณ ๋ถ๋ฅธ๋ค.
๐ฑ Ioc(Inversion of Control)
IoC(Inversion of Control)๋ "์ ์ด์ ์ญ์ " ์ด๋ผ๋ ์๋ฏธ๋ก,
๋ง ๊ทธ๋๋ก ๋ฉ์๋๋ ๊ฐ์ฒด์ ํธ์ถ์์ ์ ๊ฐ๋ฐ์๊ฐ ๊ฒฐ์ ํ๋ ๊ฒ์ด ์๋๋ผ, ์ธ๋ถ์์ ๊ฒฐ์ ๋๋ ๊ฒ์ ์๋ฏธํ๋ค.
IoC๋ ์ ์ด์ ์ญ์ ์ด๋ผ๊ณ ๋งํ๋ฉฐ, ๊ฐ๋จํ ๋งํด "์ ์ด์ ํ๋ฆ์ ๋ฐ๊พผ๋ค"๋ผ๊ณ ํ๋ค.
๊ฐ์ฒด์ ์์กด์ฑ์ ์ญ์ ์์ผ ๊ฐ์ฒด ๊ฐ์ ๊ฒฐํฉ๋๋ฅผ ์ค์ด๊ณ ์ ์ฐํ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๊ฒ ํ์ฌ ๊ฐ๋ ์ฑ ๋ฐ ์ฝ๋ ์ค๋ณต, ์ ์ง ๋ณด์๋ฅผ ํธํ๊ฒ ํ ์ ์๊ฒ ํ๋ค.
๊ธฐ์กด์๋ ๋ค์๊ณผ ์์๋ก ๊ฐ์ฒด๊ฐ ๋ง๋ค์ด์ง๊ณ ์คํ๋์๋ค.
- ๊ฐ์ฒด ์์ฑ
- ์์กด์ฑ ๊ฐ์ฒด ์์ฑ
- ํด๋์ค ๋ด๋ถ์์ ์์ฑ
- ์์กด์ฑ ๊ฐ์ฒด ๋ฉ์๋ ํธ์ถ
ํ์ง๋ง, ์คํ๋ง์์๋ ๋ค์๊ณผ ๊ฐ์ ์์๋ก ๊ฐ์ฒด๊ฐ ๋ง๋ค์ด์ง๊ณ ์คํ๋๋ค.
- ๊ฐ์ฒด ์์ฑ
- ์์กด์ฑ ๊ฐ์ฒด ์ฃผ์
- ์ค์ค๋ก๊ฐ ๋ง๋๋๊ฒ์ด ์๋๋ผ ์ ์ด๊ถ์ ์คํ๋ง์๊ฒ ์์ํ์ฌ ์คํ๋ง์ด ๋ง๋ค์ด๋์ ๊ฐ์ฒด๋ฅผ ์ฃผ์ ํ๋ค.
- ์์กด์ฑ ๊ฐ์ฒด ๋ฉ์๋ ํธ์ถ
์คํ๋ง์ด ๋ชจ๋ ์์กด์ฑ ๊ฐ์ฒด๋ฅผ ์คํ๋ง์ด ์คํ๋ ๋ ๋ค ๋ง๋ค์ด์ฃผ๊ณ ํ์ํ๊ณณ์ ์ฃผ์ ์์ผ์ค์ผ๋ก์จ
Bean๋ค์ ์ฑ๊ธํด ํจํด์ ํน์ง์ ๊ฐ์ง๋ฉฐ,
์ ์ด์ ํ๋ฆ์ ์ฌ์ฉ์๊ฐ ์ปจํธ๋กค ํ๋ ๊ฒ์ด ์๋๋ผ ์คํ๋ง์๊ฒ ๋งก๊ฒจ ์์ ์ ์ฒ๋ฆฌํ๊ฒ ๋๋ค.
'Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Spring ) Java Spring @Override annotation ์ด๋? @Override ์ฌ์ฉ๋ฒ (0) | 2023.07.19 |
---|---|
Spring ) @Id, @Column, @GeneratedValue, @Entity, @Table (0) | 2023.07.14 |
Spring ) AOP (Aspect Oriented Programming)๋? (0) | 2023.07.13 |
Spring ) AOP (0) | 2023.07.13 |
Spring ) ์คํ๋ง ๋น(Bean)์ด๋ ๋ฌด์์ธ๊ฐ? (0) | 2023.07.12 |