JavaRush /Java Blog /Random-KO /Spring ์‚ฌ์šฉ์˜ ์ด์ 
Alex
๋ ˆ๋ฒจ 37

Spring ์‚ฌ์šฉ์˜ ์ด์ 

Random-KO ๊ทธ๋ฃน์— ๊ฒŒ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค
๋งŽ์€ ์ดˆ๋ณด ๊ฐœ๋ฐœ์ž๋Š” ์กฐ๋งŒ๊ฐ„ Java๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•˜๋Š” ๋ฐ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ์ธ Spring์„ ์ ‘ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. Spring์„ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ฃผ์š” ์ž‘์—…์€ ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ J2EE ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์„ ๋‹จ์ˆœํ™”ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Spring์„ ์‚ฌ์šฉํ•  ๋•Œ ๊ฐœ๋ฐœ์ž๊ฐ€ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ฃผ์š” ์ด์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
Spring ์‚ฌ์šฉ์˜ ์ด์  - 1
  • ํ–ฅํ›„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•ด "๋น„์–ด ์žˆ๋Š”" ๊ณต๊ฐ„์„ ์›ํ•˜๋Š” ๊ฒฝ์šฐ Spring์€ ํ–ฅํ›„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋™์‹œ์— ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์ถ•์„ ์œ„ํ•œ ๊ทœ์น™์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๊ธฐ๋Šฅ์„ ๊ตฌ์ถ•ํ•ด์•ผ ํ•˜๋Š” ํŠน์ • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์•„ํ‚คํ…์ฒ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ ์‹ค์ œ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด ๋ฉ๋‹ˆ๋‹ค. Spring์—๋Š” ํŠน์ • ๊ธฐ๋Šฅ(SpringMVC, Spring Security, SpringData ๋“ฑ)์— ๋งž์ถฐ์ง„ ๋งŽ์€ ํ•˜์œ„ ํ”„๋กœ์ ํŠธ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ „์ฒด ๋ชฉ๋ก์€ https://spring.io/projects ์—์„œ ๋ณผ ์ˆ˜ ์žˆ์œผ๋ฉฐ , ์—ฌ๊ธฐ์—์„œ ๊ฐœ๋ฐœ์ž๋Š” ์ž์‹ ์—๊ฒŒ ๊ฐ€์žฅ ์ ํ•ฉํ•œ ๊ฒƒ์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋จธ์ง€๋Š” ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ์ด๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์ถ•์˜ ๋ชจ๋“ˆ์‹ ์›์น™์ž…๋‹ˆ๋‹ค.

  • Spring ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๊ฐ์ฒด๋Š” ์ข…์†์„ฑ ์ฃผ์ž…์„ ์‚ฌ์šฉํ•˜์—ฌ ๋Š์Šจํ•˜๊ฒŒ ๊ฒฐํ•ฉ๋ฉ๋‹ˆ๋‹ค. Spring์˜ ๋ชฉํ‘œ ์ค‘ ํ•˜๋‚˜๋Š” ์ผ๋ถ€ ๊ฐ์ฒด์˜ ๋‹ค๋ฅธ ๊ฐ์ฒด์— ๋Œ€ํ•œ ์ข…์†์„ฑ์„ ๊นจ๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ค‘๋…์ด๋ž€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์ด๋Š” Object1์ด ๋‹ค๋ฅธ Object2์˜ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. ์ฆ‰, Object1์€ ํ•ด๋‹น ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” Object2์— ์ข…์†๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Š” ์™œ ์˜์กดํ•ฉ๋‹ˆ๊นŒ? ๊ทธ๋Ÿฌ๋‚˜ Object2 ๊ฐœ์ฒด๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ๊นŒ์ง€ Object1์€ ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ค‘๋…์„ ๋Š๋Š” ๋ฐฉ๋ฒ•? ์ƒ์„ฑ์ž๋‚˜ ์„ค์ •์ž๋ฅผ ํ†ตํ•ด Object2 ๊ฐœ์ฒด์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ Object1 ๊ฐœ์ฒด์— "์ฃผ์ž…"ํ•ฉ๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์„ธ์Šค๋Š” ์‹ค์ œ๋กœ ์ข…์†์„ฑ ์ฃผ์ž…์ž…๋‹ˆ๋‹ค. Spring์—์„œ๋Š” ๊ฐ์ฒด๊ฐ€ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์ถ•๋˜์–ด์•ผ ํ•˜๋ฏ€๋กœ ํ›„์† ๊ตฌํ˜„ ๋Œ€์ฒด๋ฅผ ์œ„ํ•ด ์ข…์†์„ฑ์ด ์ธํ„ฐํŽ˜์ด์Šค ํ˜•ํƒœ๋กœ ์ฃผ์ž…๋œ๋‹ค๋Š” ์ ์„ ๊ธฐ์–ตํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

  • new ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜๋™์œผ๋กœ ๊ฐœ์ฒด๋ฅผ ๋งŒ๋“ค ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ Spring ์ปจํ…Œ์ด๋„ˆ์— ์œ„์ž„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์ œ์–ด ์—ญ์ „(IoC)์ž…๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ์ข…์†์„ฑ(๊ฐ์ฒด)์„ ์ธ์Šคํ„ด์Šคํ™”ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ปจํ…Œ์ด๋„ˆ๋กœ ์ „์†กํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๋ชจ๋“  ์งˆ๋ฌธ์—์„œ ๊ฐœ๋ฐœ์ž์˜ ์—ญํ• ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? Spring ์ปจํ…์ŠคํŠธ์— ์†ํ•˜๋„๋ก ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์„ ์–ธํ•ฉ๋‹ˆ๋‹ค. ๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ Spring์˜ ์ปจํ…์ŠคํŠธ๋Š” ๋ชจ๋“  Bean์ด ์œ„์น˜ํ•œ ๋งต์ž…๋‹ˆ๋‹ค. Bean์ด Spring์˜ ์ปจํ…์ŠคํŠธ์— ์žˆ๋‹ค๊ณ  ๋งํ•  ๋•Œ Bean์ด ๋งต์— ์žˆ๊ณ  Spring์ด ๋งต์—์„œ ์ด๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ํ‚ค๋ฅผ ์•Œ๊ณ  ์žˆ๋‹ค๋Š” ์ ์„ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค. xml ๊ตฌ์„ฑ์ด๋‚˜ @Component ์ฃผ์„์ด ์žˆ๋Š” ํด๋ž˜์Šค์—์„œ bean์œผ๋กœ ํ‘œ์‹œ๋œ ๋ชจ๋“  ํ•ญ๋ชฉ์€ ์ธ์Šคํ„ด์Šคํ™”๋˜๊ณ  Map<key,bean> ๋งต ํ˜•์‹์˜ ๋งต์— ๋ฐฐ์น˜๋ฉ๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ์—๋Š” ๋ชจ๋“  ๋นˆ์„ "์ €์žฅ"ํ•˜๋Š” ๋งต์ด ์žˆ์Šต๋‹ˆ๋‹ค. (Spring์˜ ํ•ต์‹ฌ ๊ฐœ๋…์€ ๋นˆ์ด๋ฉฐ ์ด๋Š” ์ปจํ…Œ์ด๋„ˆ์— ์˜ํ•ด ๊ด€๋ฆฌ๋˜๋Š” ์—”ํ„ฐํ‹ฐ์ž…๋‹ˆ๋‹ค. ๋นˆ(์ผ๋ฐ˜ ํด๋ž˜์Šค)์ด ๊ด€๋ฆฌ๋˜๋ ค๋ฉด ๋นˆ ํด๋ž˜์Šค์— ์†ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Spring ์ปจํ…์ŠคํŠธ.) ๊ทธ๋ฆฌ๊ณ  ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๊ตฌํ˜„์„ ํ†ตํ•ด ์ปจํ…Œ์ด๋„ˆ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. map.get(key), ํ‚ค๋Š” ํ•„๋“œ ์œ ํ˜•์ž…๋‹ˆ๋‹ค.

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

  • Spring์—์„œ๋Š” Bean ์„ค์ •์ด ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ์™€ ๋ถ„๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ๊ตฌ์„ฑ(์ข…์†์„ฑ ๊ด€๋ฆฌ)์„ ๋ณ„๋„์˜ ํŒŒ์ผ๋กœ ์ด๋™ํ•˜๋ฉด ํ”„๋กœ์ ํŠธ์˜ ํ›„์† ๋ณ€๊ฒฝ(๊ตฌํ˜„ ๊ต์ฒด)์ด ๋” ์‰ฌ์›Œ์ง‘๋‹ˆ๋‹ค.


    • ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅ์„ฑ์ด ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํด๋ž˜์Šค๊ฐ€ DI ๋ฐ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์„ค๊ณ„๋˜๋ฉด ํ…Œ์ŠคํŠธ ์ค‘์— ์ข…์†์„ฑ์„ ์‰ฝ๊ฒŒ ๋Œ€์ฒด(๊ฐ€์งœ ๊ตฌํ˜„์œผ๋กœ)ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ด์ง‘๋‹ˆ๋‹ค.

    • ์ฃผ์„์„ ์‚ฌ์šฉํ•˜์—ฌ ์„ ์–ธ์  ์Šคํƒ€์ผ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•˜๋Š” ๊ธฐ๋Šฅ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ฝ”๋“œ ์–‘์„ ์ค„์ž…๋‹ˆ๋‹ค.

    • ๋ฐ์ดํ„ฐ ์•ก์„ธ์Šค ๊ธฐ์ˆ , ํŠธ๋žœ์žญ์…˜, AOP์™€์˜ ์ง€์› ๋ฐ ์šฐ์ˆ˜ํ•œ ํ†ตํ•ฉ์œผ๋กœ ๊ฐœ๋ฐœ์ด ๋‹จ์ˆœํ™”๋ฉ๋‹ˆ๋‹ค.

    • ์ข‹์€ ๋ฌธ์„œ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋””๋ฒ„๊น…ํ•  ๋•Œ ๋งŽ์€ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.
Spring์„ ์ดํ•ดํ•˜๊ณ  ์‹ถ์€ ๋ถ„๋“ค์€ K. Walls๋ฅผ ์ฝ์–ด๋ณด์‹œ๊ธธ ๊ถŒํ•ฉ๋‹ˆ๋‹ค. Spring in Action - 3ํŒ ๋ฐ ๊ณต์‹ ๋ฌธ์„œ.
์ฝ”๋ฉ˜ํŠธ
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION