์ถœ์ฒ˜ : https://sehun-kim.github.io/sehun/springbean-lifecycle/#2

 

์Šคํ”„๋ง์˜ ์‚ผ๊ฐํ˜•
DI IoC AOP

์Šคํ”„๋ง์˜ ๊ธฐ๋ฐ˜์ด ๋˜๋Š” ์„ค๊ณ„ ๊ฐœ๋…์ธ ์Šคํ”„๋ง์˜ ์‚ผ๊ฐํ˜•

 

 

์˜์กด์„ฑ ์ฃผ์ž… DI ( Dependency Injection )

Inversion of Control ์ด๋ผ๊ณ ๋„ ํ•˜๋Š” ์˜์กด ๊ด€๊ณ„ ์ฃผ์ž…(Dependency Injection)์ด๋ผ๊ณ ๋„ ํ•˜๋ฉฐ, ์–ด๋–ค ๊ฐ์ฒด๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ์˜์กด ๊ฐ์ฒด๋ฅผ ์ง์ ‘ ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ, ์ฃผ์ž… ๋ฐ›์•„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. (new ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•ด์„œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค) ์Šคํ”„๋ง์ด ๋‹ค๋ฅธ ํ”„๋ ˆ์ž„์›Œํฌ์™€ ์ฐจ๋ณ„ํ™”๋˜์–ด ์ œ๊ณตํ•˜๋Š” ์˜์กด ๊ด€๊ณ„ ์ฃผ์ž… ๊ธฐ๋Šฅ์œผ๋กœ, DI(์˜์กด์„ฑ ์ฃผ์ž…)๋ฅผ ํ†ตํ•ด์„œ ๋ชจ๋“ˆ ๊ฐ„์˜ ๊ฒฐํ•ฉ๋„๊ฐ€ ๋‚ฎ์•„์ง€๊ณ  ์œ ์—ฐ์„ฑ์ด ๋†’์•„์ง„๋‹ค.

์ถœ์ฒ˜ :https://velog.io/@gillog/Spring-DIDependency-Injection

A ๊ฐ์ฒด์—์„œ B, C๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉ(์˜์กด)ํ•  ๋•Œ, A ๊ฐ์ฒด์—์„œ ์ง์ ‘ ์ƒ์„ฑ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์™ธ๋ถ€(IOC์ปจํ…Œ์ด๋„ˆ)์—์„œ ์ƒ์„ฑ๋œ B, C๊ฐ์ฒด๋ฅผ ์กฐ๋ฆฝ(์ฃผ์ž…)์‹œ์ผœ setter ํ˜น์€ ์ƒ์„ฑ์ž๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹ 

 

์˜ˆ์‹œ๋กœ ์žฅ๋‚œ๊ฐ๊ณผ ๋ฐฐํ„ฐ๋ฆฌ๋ฅผ ๋“ค ์ˆ˜ ์žˆ๋‹ค. ์žฅ๋‚œ๊ฐ๋“ค์€ ๋ฒ ํ„ฐ๋ฆฌ๊ฐ€ ์žˆ์–ด์•ผ ์›€์ง์ผ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ฆ‰ ๋ฒ ํ„ฐ๋ฆฌ์— ์˜์กดํ•˜๊ณ  ์žˆ๋‹ค. ์žฅ๋‚œ๊ฐ๋“ค์—๊ฒŒ ๋ฒ ํ„ฐ๋ฆฌ๋ฅผ ๋„ฃ์–ด์ฃผ๋Š” ๊ฒƒ์„ ์˜์กด์„ฑ ์ฃผ์ž…์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ์ข‹๋‹ค.

๋ฒ ํ„ฐ๋ฆฌ์˜ ์ผ์ฒดํ˜•์ธ ๊ฒฝ์šฐ์—๋Š” ์ƒ์„ฑ์ž์—์„œ๋งŒ ์˜์กด์„ฑ์„ ์ฃผ์ž…ํ•ด์ฃผ๋Š” ์ƒํ™ฉ์ด๋ผ ๋ฒ ํ„ฐ๋ฆฌ๊ฐ€ ๋–จ์–ด์ง€๊ฒŒ ๋œ๋‹ค๋ฉด ๋‹ค๋ฅธ ๋ฒ ํ„ฐ๋ฆฌ๋กœ ๊ต์ฒดํ•˜์ง€ ๋ชปํ•˜๊ณ  ์ƒˆ๋กœ์šด ๊ฒƒ์œผ๋กœ ๋ฐ”๊ฟ”์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์œ ์—ฐํ•˜์ง€ ๋ชปํ•œ ๋ฐฉ์‹์ด๋‹ค. 

์ž๋ฐ”์™€ ๊ฐ™์€ ๊ฒฝ์šฐ์—” setter, ์ƒ์„ฑ์ž๋ฅผ ์ด์šฉํ•ด์„œ ์™ธ๋ถ€์—์„œ ์ฃผ์ž…ํ•ด์ฃผ๋Š” ์ƒํ™ฉ์€ ์™ธ๋ถ€์—์„œ ๋ฒ ํ„ฐ๋ฆฌ๋ฅผ ๊ต์ฒดํ•ด์ค„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ผ์ฒดํ˜•๋ณด๋‹ค ์œ ์—ฐํ•œ ์ƒํ™ฉ์ด๋‹ค. 

 

 

์ถœ์ฒ˜ : https://velog.io/@gillog/Spring-DIDependency-Injection

์Šคํ”„๋ง์—์„œ๋Š” ๊ฐ์ฒด๋ฅผ Bean์ด๋ผ๊ณ  ๋ถ€๋ฅด๋ฉฐ, ํ”„๋กœ์ ํŠธ๊ฐ€ ์‹คํ–‰๋ ๋•Œ ์‚ฌ์šฉ์ž๊ฐ€ Bean์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ๊ฐ์ฒด๋“ค์˜ ์ƒ์„ฑ๊ณผ ์†Œ๋ฉธ์— ๊ด€๋ จ๋œ ์ž‘์—…์„ ์ž๋™์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•ด์ฃผ๋Š”๋ฐ ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ๊ณณ์„ ์Šคํ”„๋ง์—์„œ๋Š” Bean ์ปจํ…Œ์ด๋„ˆ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

 

 

 

์˜์กด์„ฑ ์ฃผ์ž…์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

1. ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์—ฌ์ค€๋‹ค.

2. ํ…Œ์ŠคํŠธ์— ์šฉ์ดํ•˜๋‹ค.

3. ์ฝ”๋“œ๋ฅผ ๋‹จ์ˆœํ™” ์‹œ์ผœ์ค€๋‹ค.

4. ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋ฅผ ํŒŒ์•…ํ•˜๊ธฐ ์ˆ˜์›”ํ•˜๊ณ  ์ฝ”๋“œ๊ฐ€ ์ฝ๊ธฐ ์‰ฌ์›Œ์ง€๋Š” ์ ์ด ์žˆ๋‹ค.

5. ์ข…์†์„ฑ์ด ๊ฐ์†Œํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€๊ฒฝ์— ๋ฏผ๊ฐํ•˜์ง€ ์•Š๋‹ค.

6. ๊ฒฐํ•ฉ๋„(coupling)๋Š” ๋‚ฎ์ถ”๋ฉด์„œ ์œ ์—ฐ์„ฑ๊ณผ ํ™•์žฅ์„ฑ์€ ํ–ฅ์ƒ ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

7. ๊ฐ์ฒด๊ฐ„์˜ ์˜์กด๊ด€๊ณ„๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

 


Reference.

link1 link2

+ Recent posts