[Spring] ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ

์Šคํ”„๋ง์ด ์™œ ํƒ„์ƒํ•˜๊ฒŒ ๋˜์—ˆ์„๊นŒ?


์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ๋กœ๋“œ ์กด์Šจ์ด 2004๋…„์— ๋งŒ๋“  ์˜คํ”ˆ์†Œ์Šค ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค. ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ ์ด์ „์—” ์ž๋ฐ” ๊ธฐ๋ฐ˜์˜ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋Œ€๋ถ€๋ถ„ EJB(Enterprise Java Beans)๋กœ ๊ฐœ๋ฐœ๋˜์—ˆ์—ˆ์ฃ . ํ•˜์ง€๋งŒ EJB๋Š” ํ•™์Šต์— ๋งŽ์€ ์‹œ๊ฐ„์ด ํ•„์š”ํ•˜๊ณ , ๊ฐœ๋ฐœ ๋ฐ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์–ด๋ ต๋‹ค๋Š” ์ , ๊ทธ๋ฆฌ๊ณ  EJB ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ฐฐ์น˜ํ•˜๊ธฐ ์œ„ํ•œ WAS(Web Application Server)๊ฐ€ ๊ต‰์žฅํžˆ ๊ณ ๊ฐ€์˜ ์žฅ๋น„์˜€๊ธฐ์— ๋งŽ์€ ๊ฐœ๋ฐœ์ž๋“ค์˜ ์™ธ๋ฉด์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. 

 

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

 

์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ํ‰๋ฒ”ํ•œ POJO๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ๋„ EJB์—์„œ๋งŒ ๊ฐ€๋Šฅํ–ˆ๋˜ ์ ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ EJB๋ณด๋‹ค ํ›จ์”ฌ ๊ฐ„๋‹จํ•˜์ฃ . ๋””์ž์ธ ํŒจํ„ด ๋˜ํ•œ ์‹ ๊ฒฝ ์“ธ ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ์—๋Š” ์ด๋ฏธ ๋งŽ์€ ๋””์ž์ธ ํŒจํ„ด๋“ค์ด ์ ์šฉ๋˜์–ด ๋ฐฐํฌ๋˜๋ฏ€๋กœ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ์ž์ฒด๊ฐ€ ๋””์ž์ธ ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

*POJO 

POJO๋ž€ ๋ง ๊ทธ๋Œ€๋กœ ํ‰๋ฒ”ํ•œ ์˜›๋‚  ์ž๋ฐ” ๊ฐ์ฒด๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ๋Œ€ํ‘œ์ ์ธ Not POJO ํด๋ž˜์Šค๊ฐ€ Servlet ํด๋ž˜์Šค์ด๋‹ค. Servlet ํด๋ž˜์Šค๋Š” ์šฐ๋ฆฌ ๋งˆ์Œ๋Œ€๋กœ ๋งŒ๋“ค ์ˆ˜ ์—†์œผ๋ฉฐ, ๋ฐ˜๋“œ์‹œ Servlet์—์„œ ์š”๊ตฌํ•˜๋Š” ๊ทœ์น™์— ๋งž๊ฒŒ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์–ด์•ผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ์˜ ํŠน์ง• 


์Šคํ”„๋ง์˜ ํŠน์ง•์„ ํ•œ ์ค„๋กœ ์„œ์ˆ ํ•˜๋ฉด, "IoC์™€ AOP๋ฅผ ์ง€์›ํ•˜๋Š” ๊ฒฝ๋Ÿ‰์˜ ์ปจํ…Œ์ด๋„ˆ ํ”„๋ ˆ์ž„์›Œํฌ"๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

(1) ๊ฒฝ๋Ÿ‰

์Šคํ”„๋ง์€ ํฌ๊ธฐ ์ธก๋ฉด์—์„œ ๊ฐ€๋ณ์Šต๋‹ˆ๋‹ค. ์Šคํ”„๋ง์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ชจ๋“ˆ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์œผ๋ฉฐ, ๊ฐ ๋ชจ๋“ˆ์€ ํ•˜๋‚˜ ์ด์ƒ์˜ JAR ํŒŒ์ผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์Šคํ”„๋ง์„ ์ด์šฉํ•˜์—ฌ ๋งŒ๋“  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฐฐํฌ ์—ญ์‹œ ๋งค์šฐ ๋น ๋ฅด๊ณ  ์‰ฝ์Šต๋‹ˆ๋‹ค. ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ๋Š” POJO ํ˜•ํƒœ์˜ ๊ฐ์ฒด๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ํŠน๋ณ„ํ•œ ๊ทœ์น™์ด ์—†๋Š” ๋‹จ์ˆœํ•˜๊ณ  ๊ฐ€๋ฒผ์šด ๊ฐ์ฒด์ด๋ฏ€๋กœ ๊ธฐ์กด์˜ EJB ๊ฐ์ฒด๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๊ฐ€๋ณ๊ณ  ๋น ๋ฅผ ์ˆ˜ ๋ฐ–์— ์—†์Šต๋‹ˆ๋‹ค.

 

(2) ์ œ์–ด์˜ ์—ญํ–‰(IoC) 

์Šคํ”„๋ง์€ ์ œ์–ด์˜ ์—ญํ–‰์„ ํ†ตํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ฐ์ฒด ๊ฐ„์˜ ๋Š์Šจํ•œ ๊ฒฐํ•ฉ, ์ฆ‰ ๋‚ฎ์€ ๊ฒฐํ•ฉ๋„๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. IoC๊ฐ€ ์ ์šฉ๋˜๋ฉด ๊ฐ์ฒด ์ƒ์„ฑ์„ ์ž๋ฐ” ์ฝ”๋“œ๋กœ ์ง์ ‘ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด์•„๋‹ˆ๋ผ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋Œ€์‹  ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ์†Œ์Šค์— ์˜์กด๊ด€๊ณ„๊ฐ€ ๋ช…์‹œ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ๊ต‰์žฅํžˆ ํŽธ๋ฆฌํ•ด์ง‘๋‹ˆ๋‹ค.

 

(3) ๊ด€์ ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(AOP) 

๊ด€์ ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ๋น„์ฆˆ๋‹ˆ์Šค ๋ฉ”์†Œ๋“œ๋ฅผ ๊ฐœ๋ฐœํ•  ๋•Œ, ํ•ต์‹ฌ ๋น„์ง€๋‹ˆ์Šค ๋กœ์ง๊ณผ ๊ฐ ๋น„์ง€๋‹ˆ์Šค ๋ฉ”์†Œ๋“œ๋งˆ๋‹ค ๋ฐ˜๋ณตํ•ด์„œ ๋“ฑ์žฅํ•˜๋Š” ๊ณตํ†ต ๋กœ์ง์„ ๋ถ„๋ฆฌํ•จ์œผ๋กœ์จ ์‘์ง‘๋„๊ฐ€ ๋†’๊ฒŒ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๊ณตํ†ต์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋Šฅ๋“ค์€ ์™ธ๋ถ€์˜ ๋…๋ฆฝ๋œ ํด๋ž˜์Šค๋กœ ๋ถ„๋ฆฌํ•˜๊ณ , ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ์— ๋ช…์‹œํ•˜์ง€ ์•Š๊ณ  ์„ ์–ธ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜์—ฌ ์ ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ด€์ ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๊ธฐ๋ณธ ๊ฐœ๋…์ž…๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๋˜๋ฉด ๊ณตํ†ต ๊ธฐ๋Šฅ์„ ๋ถ„๋ฆฌํ•˜์—ฌ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์‘์ง‘๋„๊ฐ€ ๋†’์€ ๋น„์ฆˆ๋‹ˆ์Šค ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์œ ์ง€๋ณด์ˆ˜๋ฅผ ํ˜์‹ ์ ์œผ๋กœ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

(4) ์ปจํ…Œ์ด๋„ˆ 

์ปจํ…Œ์ด๋„ˆ๋Š” ํŠน์ • ๊ฐ์ฒด์˜ ์ƒ์„ฑ๊ณผ ๊ด€๋ฆฌ๋ฅผ ๋‹ด๋‹นํ•˜๋ฉฐ ๊ฐ์ฒด ์šด์šฉ์— ํ•„์š”ํ•œ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์„œ๋ฒ„ ์•ˆ์— ํฌํ•จ๋˜์–ด ๋ฐฐํฌ ๋ฐ ๊ตฌ๋™์ด ๋ฉ๋‹ˆ๋‹ค. ๋Œ€ํ‘œ์ ์ธ ์ปจํ…Œ์ด๋„ˆ๋กœ๋Š” Servlet ์ปจํ…Œ์ด๋„ˆ์™€ EJB ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์žˆ์œผ๋ฉฐ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์šด์šฉ์— ํ•„์š”ํ•œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ฐ์ฒด ๊ฐ„์˜ ์˜์กด๊ด€๊ณ„๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค๋Š” ์ ์—์„œ ์Šคํ”„๋ง๋„ ์ผ์ข…์˜ ์ปจํ…Œ์ด๋„ˆ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

Reference 

SPRING QUICK START, ์ฑ„๊ทœํƒœ, ๋ฃจ๋น„ํŽ˜์ดํผ