Home > Spring > ๐Ÿƒ[Spring] Spring ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ .

๐Ÿƒ[Spring] Spring ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ .
Spring Framework

๐Ÿƒ[Spring] Spring ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ .

Spring ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€๊ฐ€ ์žˆ์œผ๋ฉฐ, ๊ทธ ์ฃผ์š” ๋ชฉ์ ์€ ๊ฐ์ฒด์˜ ์ƒ๋ช…์ฃผ๊ธฐ์™€ ์˜์กด์„ฑ์„ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ณ , ์ฝ”๋“œ์˜ ๋ชจ๋“ˆํ™”์™€ ์œ ์—ฐ์„ฑ์„ ๋†’์ด๋Š” ๋ฐ ์žˆ์Šต๋‹ˆ๋‹ค.

Spring ์ปจํ…Œ์ด๋„ˆ๋Š” ์ด๋ฅผ ํ†ตํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์„ ๋‹จ์ˆœํ™”ํ•˜๊ณ  ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ค๋ฉฐ, ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ๊ณผ ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅ์„ฑ์„ ๋†’์ž…๋‹ˆ๋‹ค.

1๏ธโƒฃ Spring ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ .

1. ์˜์กด์„ฑ ์ฃผ์ž…(DI, Dependency Injection) ๊ด€๋ฆฌ.

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

2. ๊ฐ์ฒด์˜ ์ƒ๋ช…์ฃผ๊ธฐ ๊ด€๋ฆฌ.

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

3. ๋ชจ๋“ˆํ™”์™€ ์žฌ์‚ฌ์šฉ์„ฑ.

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

4. ํ…Œ์ŠคํŠธ ์šฉ์ด์„ฑ.

  • ์˜์กด์„ฑ ์ฃผ์ž…์„ ํ†ตํ•ด ๊ฐ์ฒด ๊ฐ„์˜ ๊ฒฐํ•ฉ๋„๊ฐ€ ๋‚ฎ์•„์ง€๋ฉด, ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๊ฐ€ ํ›จ์”ฌ ์‰ฌ์›Œ์ง‘๋‹ˆ๋‹ค.
  • Spring ์ปจํ…Œ์ด๋„ˆ๋Š” ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์—์„œ๋„ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, Mock ๊ฐ์ฒด๋ฅผ ์ฃผ์ž…ํ•ด ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋‚˜ ์™ธ๋ถ€ ์‹œ์Šคํ…œ์— ์˜์กดํ•˜์ง€ ์•Š๊ณ ๋„ ๊ฐ ๊ฐ์ฒด์˜ ๋™์ž‘์„ ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ด๋Š” ํŠนํžˆ ์ž๋™ํ™” ํ…Œ์ŠคํŠธ์™€ TDD(Test-Driven Development) ์—์„œ ํฐ ์žฅ์ ์œผ๋กœ ์ž‘์šฉํ•ฉ๋‹ˆ๋‹ค.

5. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ค์ •์˜ ์ผ๊ด€์„ฑ.

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

6. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์œ ์—ฐ์„ฑ ํ–ฅ์ƒ.

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

7. AOP(Aspect-Oriented Programming, ๊ด€์  ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ) ์ง€์›.

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

8. ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ.

  • Spring ์ปจํ…Œ์ด๋„ˆ๋Š” ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ๋ฅผ ์‰ฝ๊ฒŒ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ๋ฅผ ์—ฌ๋Ÿฌ ๊ณณ์—์„œ ์ˆ˜๋™์œผ๋กœ ๊ด€๋ฆฌํ•  ํ•„์š” ์—†์ด, ์–ด๋…ธํ…Œ์ด์…˜์„ ํ†ตํ•ด ํŠธ๋žœ์žญ์…˜ ๊ฒฝ๊ณ„๋ฅผ ์ •์˜ํ•˜๊ณ  ์ž๋™์œผ๋กœ ๊ด€๋ฆฌ๋˜๋„๋ก ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ด๋Š” ํŠนํžˆ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ๊ด€๋ จ๋œ ์ž‘์—…์—์„œ ์ผ๊ด€๋œ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋ฅผ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

9. ๊ตญ์ œํ™” ์ง€์›.

  • Spring ์ปจํ…Œ์ด๋„ˆ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ตญ์ œํ™”(i18n) ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • ์ด๋ฅผ ํ†ตํ•ด ๋‹ค๊ตญ์–ด ์ง€์›์ด ํ•„์š”ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋ฉ”์‹œ์ง€ ๋ฒˆ์—ญ ๋ฐ ํฌ๋งทํŒ…์„ ์‰ฝ๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2๏ธโƒฃ ๊ฒฐ๋ก .

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