Community

๐Ÿ€ ์Šคํ”„๋ง์˜ ์ฝ˜์…‰ํŠธ(IoC, DI, AOP, PSA) ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ

์Šคํ”„๋ง์˜ ์ค‘์š”ํ•œ ์ฝ˜์…‰ํŠธ์ธ IoC(์ œ์–ด์˜ ์—ญ์ „), DI(์˜์กด์„ฑ ์ฃผ์ž…), AOP(๊ด€์  ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ), PSA(์ด์‹ ๊ฐ€๋Šฅํ•œ ์„œ๋น„์Šค ์ถ”์ƒํ™”)์— ๋Œ€ํ•ด ์ž˜ ์„ค๋ช…๋œ ๋ธ”๋กœ๊ทธ ๊ธ€์ด ์žˆ์–ด ๊ณต์œ ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๐Ÿ“Œ IoC(์ œ์–ด์˜ ์—ญ์ „) ์ œ์–ด์˜ ์—ญ์ „์€ ๋‹ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์ง์ ‘ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์ œ์–ดํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์™ธ๋ถ€์—์„œ ๊ด€๋ฆฌํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ๊ฐ€์ ธ์™€ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ์Šคํ”„๋ง์—์„œ๋Š” ์ œ์–ด์˜ ์—ญ์ „ ๊ฐœ๋…์„ ์ค‘์š”ํ•œ ์ปจ์…‰์œผ๋กœ ์‚ผ๊ณ  ์žˆ์œผ๋ฉฐ, ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ์ฃผ์ฒด๋ฅผ โ€œ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆโ€ ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ“Œ DI(์˜์กด์„ฑ ์ฃผ์ž…) DI ๋Š” Dependency Injection๋ฅผ ์ค„์ธ ํ‘œํ˜„์œผ๋กœ, ์•ž์„œ ์„ค๋ช…๋“œ๋ฆฐ IoC(์ œ์–ด์˜ ์—ญ์ „)์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์Šคํ”„๋ง์—์„œ๋Š” ์ง์ ‘ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š์•„๋„ ์–ด๋…ธํ…Œ์ด์…˜์„ ํ†ตํ•ด โ€œ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆโ€ ๊ฐ€ ๋นˆ์œผ๋กœ ์ƒ์„ฑํ•œ ๊ฐ์ฒด๋ฅผ ์ฃผ์ž…ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ“Œ AOP(๊ด€์  ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ) AOP ๋Š” Aspect Oriented Programming ์„ ์ค„์ธ ํ‘œํ˜„์œผ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ๋Œ€ํ•œ ๊ด€์‹ฌ์„ ํ•ต์‹ฌ ๊ด€์ , ๋ถ€๊ฐ€ ๊ด€์ ์œผ๋กœ ๋‚˜๋ˆ„์–ด์„œ ๊ด€์‹ฌ ๊ธฐ์ค€์œผ๋กœ ๋ชจ๋“ˆํ™”ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. AOP ์˜ ๋Œ€ํ‘œ์ ์ธ ์˜ˆ๋กœ ์„œ๋น„์Šค ๊ธฐ๋Šฅ๊ณผ ๋ชจ๋‹ˆํ„ฐ๋ง ๊ธฐ๋Šฅ(๋กœ๊น…, ์†Œ์š”์‹œ๊ฐ„ ๋“ฑ)์„ ๋ถ„๋ฆฌํ•ด์„œ ๋ชจ๋“ˆํ™” ํ•˜๋Š”๊ฒƒ์„ ์˜ˆ๋กœ ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ“Œ PSA(์ด์‹ ๊ฐ€๋Šฅํ•œ ์„œ๋น„์Šค ์ถ”์ƒํ™”) PSA ๋Š” Portable Service Abstraction ์„ ์ค„์ธ ํ‘œํ˜„์œผ๋กœ ์Šคํ”„๋ง์—์„œ ์ œ๊ณตํ•˜๋Š” ๋‹ค์–‘ํ•œ ๊ธฐ์ˆ ๋“ค์„ ์ถ”์ƒํ™”ํ•ด ๊ฐœ๋ฐœ์ž๊ฐ€ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค. ๋Œ€ํ‘œ์ ์ธ ์˜ˆ๋กœ JPA, MyBatis, JDBC ์™€ ๊ฐ™์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ์ˆ ์ด ๋‹ฌ๋ผ๋„ ๋™์ผํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์“ธ์ˆ˜ ์žˆ๊ฑฐ๋‚˜ ํ†ฐ์บฃ, Undertow, Netty ๋“ฑ ๋‹ค๋ฅธ WAS ๋ฅผ ์‚ฌ์šฉํ•˜๋”๋ผ๋„ ๋น„์ง€๋‹ˆ์Šค ๋กœ์ง์€ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์กฐ๊ธˆ ๋” ์ž์„ธํ•œ ๋‚ด์šฉ์„ ๋ณด๊ณ  ์‹ถ์œผ์‹œ๋‹ค๋ฉด ๊ณต์œ ๋“œ๋ฆฐ ๋ธ”๋กœ๊ทธ๋ฅผ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”. https://shinsunyoung.tistory.com/133

์•Œ๋ฆผ

์•Œ๋ฆผ์ด ์—†์Šต๋‹ˆ๋‹ค