์คํ๋ง์ ์ผ๊ฐํ
DI IoC AOP
์คํ๋ง์ ๊ธฐ๋ฐ์ด ๋๋ ์ค๊ณ ๊ฐ๋ ์ธ ์คํ๋ง์ ์ผ๊ฐํ
์์กด์ฑ ์ฃผ์ DI ( Dependency Injection )
Inversion of Control ์ด๋ผ๊ณ ๋ ํ๋ ์์กด ๊ด๊ณ ์ฃผ์ (Dependency Injection)์ด๋ผ๊ณ ๋ ํ๋ฉฐ, ์ด๋ค ๊ฐ์ฒด๊ฐ ์ฌ์ฉํ๋ ์์กด ๊ฐ์ฒด๋ฅผ ์ง์ ๋ง๋ค์ด ์ฌ์ฉํ๋๊ฒ ์๋๋ผ, ์ฃผ์ ๋ฐ์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด๋ค. (new ์ฐ์ฐ์๋ฅผ ์ด์ฉํด์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค) ์คํ๋ง์ด ๋ค๋ฅธ ํ๋ ์์ํฌ์ ์ฐจ๋ณํ๋์ด ์ ๊ณตํ๋ ์์กด ๊ด๊ณ ์ฃผ์ ๊ธฐ๋ฅ์ผ๋ก, DI(์์กด์ฑ ์ฃผ์ )๋ฅผ ํตํด์ ๋ชจ๋ ๊ฐ์ ๊ฒฐํฉ๋๊ฐ ๋ฎ์์ง๊ณ ์ ์ฐ์ฑ์ด ๋์์ง๋ค.
A ๊ฐ์ฒด์์ B, C๊ฐ์ฒด๋ฅผ ์ฌ์ฉ(์์กด)ํ ๋, A ๊ฐ์ฒด์์ ์ง์ ์์ฑ ํ๋ ๊ฒ์ด ์๋๋ผ ์ธ๋ถ(IOC์ปจํ ์ด๋)์์ ์์ฑ๋ B, C๊ฐ์ฒด๋ฅผ ์กฐ๋ฆฝ(์ฃผ์ )์์ผ setter ํน์ ์์ฑ์๋ฅผ ํตํด ์ฌ์ฉํ๋ ๋ฐฉ์
์์๋ก ์ฅ๋๊ฐ๊ณผ ๋ฐฐํฐ๋ฆฌ๋ฅผ ๋ค ์ ์๋ค. ์ฅ๋๊ฐ๋ค์ ๋ฒ ํฐ๋ฆฌ๊ฐ ์์ด์ผ ์์ง์ผ ์ ์์ผ๋ฉฐ ์ฆ ๋ฒ ํฐ๋ฆฌ์ ์์กดํ๊ณ ์๋ค. ์ฅ๋๊ฐ๋ค์๊ฒ ๋ฒ ํฐ๋ฆฌ๋ฅผ ๋ฃ์ด์ฃผ๋ ๊ฒ์ ์์กด์ฑ ์ฃผ์ ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ์ข๋ค.
๋ฒ ํฐ๋ฆฌ์ ์ผ์ฒดํ์ธ ๊ฒฝ์ฐ์๋ ์์ฑ์์์๋ง ์์กด์ฑ์ ์ฃผ์ ํด์ฃผ๋ ์ํฉ์ด๋ผ ๋ฒ ํฐ๋ฆฌ๊ฐ ๋จ์ด์ง๊ฒ ๋๋ค๋ฉด ๋ค๋ฅธ ๋ฒ ํฐ๋ฆฌ๋ก ๊ต์ฒดํ์ง ๋ชปํ๊ณ ์๋ก์ด ๊ฒ์ผ๋ก ๋ฐ๊ฟ์ผ ํ๊ธฐ ๋๋ฌธ์ ์ ์ฐํ์ง ๋ชปํ ๋ฐฉ์์ด๋ค.
์๋ฐ์ ๊ฐ์ ๊ฒฝ์ฐ์ setter, ์์ฑ์๋ฅผ ์ด์ฉํด์ ์ธ๋ถ์์ ์ฃผ์ ํด์ฃผ๋ ์ํฉ์ ์ธ๋ถ์์ ๋ฒ ํฐ๋ฆฌ๋ฅผ ๊ต์ฒดํด์ค ์ ์๊ธฐ ๋๋ฌธ์ ์ผ์ฒดํ๋ณด๋ค ์ ์ฐํ ์ํฉ์ด๋ค.
์คํ๋ง์์๋ ๊ฐ์ฒด๋ฅผ Bean์ด๋ผ๊ณ ๋ถ๋ฅด๋ฉฐ, ํ๋ก์ ํธ๊ฐ ์คํ๋ ๋ ์ฌ์ฉ์๊ฐ Bean์ผ๋ก ๊ด๋ฆฌํ๋ ๊ฐ์ฒด๋ค์ ์์ฑ๊ณผ ์๋ฉธ์ ๊ด๋ จ๋ ์์ ์ ์๋์ ์ผ๋ก ์ํํด์ฃผ๋๋ฐ ๊ฐ์ฒด๊ฐ ์์ฑ๋๋ ๊ณณ์ ์คํ๋ง์์๋ Bean ์ปจํ ์ด๋๋ผ๊ณ ๋ถ๋ฅธ๋ค.
์์กด์ฑ ์ฃผ์ ์ ์ฌ์ฉํ๋ ์ด์
1. ์ฌ์ฌ์ฉ์ฑ์ ๋์ฌ์ค๋ค.
2. ํ ์คํธ์ ์ฉ์ดํ๋ค.
3. ์ฝ๋๋ฅผ ๋จ์ํ ์์ผ์ค๋ค.
4. ์ฌ์ฉํ๋ ์ด์ ๋ฅผ ํ์ ํ๊ธฐ ์์ํ๊ณ ์ฝ๋๊ฐ ์ฝ๊ธฐ ์ฌ์์ง๋ ์ ์ด ์๋ค.
5. ์ข ์์ฑ์ด ๊ฐ์ํ๊ธฐ ๋๋ฌธ์ ๋ณ๊ฒฝ์ ๋ฏผ๊ฐํ์ง ์๋ค.
6. ๊ฒฐํฉ๋(coupling)๋ ๋ฎ์ถ๋ฉด์ ์ ์ฐ์ฑ๊ณผ ํ์ฅ์ฑ์ ํฅ์ ์ํฌ ์ ์๋ค.
7. ๊ฐ์ฒด๊ฐ์ ์์กด๊ด๊ณ๋ฅผ ์ค์ ํ ์ ์๋ค.
Reference.
'๐ฅ > Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[spring] ๋น ๋ผ์ดํ ์ฌ์ดํด๊ณผ ๋ฒ์ (0) | 2021.08.31 |
---|---|
[spring] ์ปดํฌ๋ํธ ์ค์บ์ด๋ (0) | 2021.08.31 |
[Spring] "ํ์ด๋ฆฌ๋จ" ์คํ๋ง ์คํฐ๋ 1์ฐจ (0) | 2021.08.20 |
[Spring] DI์ ์ธ๊ฐ์ง ๋ฐฉ๋ฒ (0) | 2021.08.18 |