๊ด€๋ฆฌ ๋ฉ”๋‰ด

gi_dor

Spring Framework ๋ณธ๋ฌธ

Back_End/Spring

Spring Framework

๊ธฐ๋Œ 2024. 3. 11. 19:46

๐Ÿ“Œ Spring Framework

 

  • ์„œ๋ฒ„์—์„œ ์‹คํ–‰๋˜๋Š” ์„œ๋ฒ„์šฉ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์„ ์ง€์›ํ•˜๋Š”  ์˜คํ”ˆ์†Œ์Šค ํ”„๋ ˆ์ž„์›Œํฌ
  • ๋ชจ๋“  ์ข…๋ฅ˜์˜ ๋ฐฐํฌ ํ”Œ๋žซํผ์—์„œ ์ตœ์‹  Java ๊ธฐ๋ฐ˜ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•œ ํฌ๊ด„์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐ ๊ตฌ์„ฑ ๋ชจ๋ธ์„ ์ œ๊ณตํ•œ๋‹ค
  • POJO (Plain Old Java Object) ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์„œ๋ฒ„์šฉ ์ž๋ฐ” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์„ ์ง€์›ํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ
  • ์˜์กด์„ฑ ์ฃผ์ž… ๊ณผ ๊ด€์ ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์ง€์›ํ•œ๋‹ค

๋“ฑ์žฅ๋ฐฐ๊ฒฝ

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

 


 

๐Ÿ”น POJO - Plain Old Java Object

  • ์ˆœ์ˆ˜ํ•œ (๋‹จ์ˆœ) ์˜›๋‚  ์ž๋ฐ” ๊ฐ์ฒด
  • Plain
    • ํŠน์ •ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ˜น์€ ํ”„๋ ˆ์ž„์›Œํฌ์— ์ข…์†์ ์ด์ง€ ์•Š๋‹ค
    • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ํŠน์ •ํ•œ ์„œ๋ฒ„๊ฐ€ ํ•„์š”
    • ์žฌ์‚ฌ์šฉ์„ฑ์ด ๋†’์Œ , ์ด์‹์„ฑ์ด ๋†’์Œ
  • Old
    • EJB๊ฐ€ ๋“ฑ์žฅํ•˜๊ธฐ ์ „์— ์ž๋ฐ” ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•˜๊ณ  ์ƒ์„ฑ , ์‹คํ–‰ํ–ˆ๋˜ ์˜›๋‚  ๋ฐฉ์‹
    • EJB ์—์„œ๋Š” EJB ์„œ๋ฒ„๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ํŠน์ •ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ํŠน์ •ํ•œ ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์•„์„œ ๊ฐœ๋ฐœํ•ด์•ผํ•œ๋‹ค
    • EJB์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํŒจํ‚ค์ง•ํ•˜๊ณ  XML์„ ์ž‘์„ฑํ•˜๊ณ  ํŒจํ‚ค์ง•๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์„œ๋ฒ„์— ๋ฐฐํฌํ•˜๊ณ  ์„œ๋ฒ„๋ฅผ ์žฌ์‹œ์ž‘ํ•ด์•ผ ํ•œ๋‹ค.

 


 

๐Ÿ”ธ ์ฃผ์š” ํŠน์ง•

1๏ธโƒฃ IoC / DI์ง€์›

  • IoC (์ œ์–ด ์—ญ์ „) ๋Š” ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ์˜ ๊ฐ€์žฅ ํ•ต์‹ฌ์ ์ธ ํŠน์ง•
  • ์ œ์–ด์—ญ์ „์€ ๊ฐ์ฒด๊ฐ€ ์ž์‹ ์˜ ์˜์กด์„ฑ์„ ์ง์ ‘ ๊ด€๋ฆฌํ•˜์ง€ ์•Š๊ณ  , ์™ธ๋ถ€ ์ปจํ…Œ์ด๋„ˆ๋‚˜ ํŒฉํ† ๋ฆฌ์— ์˜์กด์„ฑ ๊ด€๋ฆฌ๋ฅผ ์œ„์ž„ํ•˜๋Š” ๊ฒƒ์ด๋‹ค
  • ์ œ์–ด์—ญ์ „์€ ์ฝ”๋“œ๋ฅผ ๋ชจ๋“ˆํ™” ํ•˜๊ณ  , ๊ฐ ์ปดํฌ๋„ŒํŠธ๊ฐ„์˜ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ”๋ฉฐ , ์ปดํฌ๋„ŒํŠธ์˜ ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์ธ๋‹ค
    • ์ œ์–ด์—ญ์ „์˜ ํ˜•ํƒœ
      • DI ( Dependency Inject : ์˜์กด์„ฑ ์ฃผ์ž… ) : ์˜์กดํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ์™ธ๋ถ€ ์ปจํ…Œ์ด๋„ˆ๋กœ๋ถ€ํ„ฐ ์ œ๊ณต( ์ฃผ์ž… , ์ „๋‹ฌ) ๋ฐ›๋Š”๋‹ค
      • DL (Dependency LookUp : ์˜์กด์„ฑ ๊ฒ€์ƒ‰ ) : ๋ฏธ๋ฆฌ ๋“ฑ๋ก๋œ ๊ฐ์ฒด ์ค‘์—์„œ ์˜์กดํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ๊ฒ€์ƒ‰ํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค

2๏ธโƒฃ AOP - ๊ด€์ ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

  • AOP ๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ๊ธฐ๋Šฅ์„ ๊ณตํ†ต๊ด€์‹ฌ์‚ฌ์™€ ํ•ต์‹ฌ ๋กœ์ง์œผ๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ ํŒจ๋Ÿฌ๋‹ค์ž„์ด๋‹ค
  • ๊ณตํ†ต ๊ด€์‹ฌ์‚ฌ๋ฅผ ๋ถ„๋ฆฌํ•ด ๋ชจ๋“ˆํ™” ํ•จ์œผ๋กœ์จ ์ฝ”๋“œ์˜ ์ค‘๋ณต์„ ์ค„์ด๋ฉฐ , ์œ ์ง€ ๊ด€๋ฆฌ๋ฅผ ์šฉ์ดํ•˜๊ฒŒํ•œ๋‹ค

4๏ธโƒฃ Spring MVC 

  • ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋ ˆ์ž„์›Œํฌ
  • MVC๋ฅผ ์ด์šฉํ•˜๋ฉด .Model _ View _ Controller ํŒจํ„ด์„ ์ ์šฉํ•ด ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๊ฒŒํ•œ๋‹ค
  • RESTful ์›น ์„œ๋น„์Šค๋ฅผ ํฌํ•จํ•œ ๋‹ค์–‘ํ•œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‰ฝ๊ฒŒ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋‹ค
  • ๊ฐœ๋ฐœ์— ์‚ฌ์šฉํ• ์ˆ˜ ์žˆ๋Š” ๋‹ค์šฉํ•œ @Annotation ์„ ์ œ๊ณตํ•œ๋‹ค

5๏ธโƒฃ Data Access / Transaction Management 

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

 

 


 

 

EJB ๊ฐ€ ๋ญ”๋ฐ ?

๐Ÿ”ถ EJB - Enterprise JavaBeans

๊ธฐ์—…ํ™˜๊ฒฝ์˜ ์‹œ์Šคํ…œ์„ ๊ตฌํ˜„ํ•˜๊ธฐ์œ„ํ•œ ์„œ๋ฒ„ ์ธก ์ปดํฌ๋„ŒํŠธ ๋ชจ๋ธ

์ฆ‰ , ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์—…๋ฌด๋กœ์ง์„ ๊ฐ€์ง€๊ณ ์žˆ๋Š” ์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋‹ค

Java EE์˜ ์ž๋ฐ”API ์ค‘ ํ•˜๋‚˜๋กœ ์›น ์‹œ์Šคํ…œ์—์„œ JSP๋Š” ํ™”๋ฉด ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•˜๊ณ  EJB๋Š” ์—…๋ฌด๋กœ์ง์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์—ญํ• ์„ํ•œ๋‹ค

  • ๋™์‹œ์ ‘์†์ž์ˆ˜๊ฐ€ 10,000์ด์ƒ ์ด์ƒ์ธ ์‚ฌ์ดํŠธ ๊ตฌ์ถ•์‹œ ์‚ฌ์šฉํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ๊ธฐ์ˆ 
  • ๋™์‹œ์ ‘์†์ž์ˆ˜๊ฐ€ ๋งŽ์€ ๊ฐ€์šด๋ฐ ์•ˆ์ •์ ์ธ ํŠธ๋žœ์žญ์…˜์ด ํ•„์š”ํ•œ ์‚ฌ์ดํŠธ ๊ตฌ์ถ•์‹œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ์ ‘์†์ž์ˆ˜๊ฐ€ ๋งŽ์€ ๊ณต๊ณต๊ธฐ๊ด€, ๊ธฐ์ƒ์ฒญ, ๋ณ‘๋ฌด์ฒญ, ๊ธˆ์œต, ๋ณดํ—˜, ํฌํ„ธ์‚ฌ์ดํŠธ, ๊ฒŒ์ž„์‚ฌ์ดํŠธ, ๊ธฐ์—…๋“ฑ์—์„œ ์ง‘์ค‘์ ์œผ๋กœ ์‚ฌ์šฉ
  • EJB ์‹œ์Šคํ…œ์€ ์†๋„๋Š” ๋Š๋ฆฌ์ง€๋งŒ ๊ฐœ๋ฐœ์‹œ์— ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๋งŽ์€ ์ž๋™ํ™”๋œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ด ๋ถ„์‚ฐ ์‹œ์Šคํ…œ ๊ตฌ์ถ•์„ ์‰ฝ๊ฒŒ ํ•ด์ค€๋‹ค.
  • EJB๋Š” JSP, Beans๋ฅผ ์‚ฌ์šฉํ•œ ์‹œ์Šคํ…œ๋ณด๋‹ค ์†๋„๋Š” ๋Š๋ฆฌ์ง€๋งŒ ์•ˆ์ •์ ์ธ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์„ ์ œ๊ณตํ•œ๋‹ค.
  • ๊ธฐ์ดˆ๊ธฐ์ˆ (JSP, BEANS, RMI, Servlet, Serialization์ง๋ ฌํ™”, Transaction, Connection Pooling)์„ ์•Œ๋ฉด EJB๋Š” ๋ฐฐ์šฐ๊ธฐ ์‰ฝ๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฝ๋‹ค.
  • EJB ๊ทœ์•ฝ์„ ์ง‘์ค‘์ ์œผ๋กœ ์Šต๋“ํ•˜๋ฉด ์‰ฝ๊ฒŒ EJB ์ฝคํฌ๋„ŒํŠธ๋ฅผ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋‹ค.

EJB ๋งํ•จ

  • ๋„ˆ๋ฌด ๋ณต์žกํ•จ
  • ์ €์žฅ์„ ์œ„ํ•œ ์—”ํ‹ฐํ‹ฐ ๋นˆ์€ ์‹คํŒจ์ž‘์ž„
  • EJB์˜ ์ด์‹์„ฑ์€ ์„œ๋ธ”๋ฆฟ๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ J2EE ๊ธฐ์ˆ ๋ณด๋‹ค ๋–จ์–ด์ง
  • ํ™•์žฅ์„ฑ์„ ๋ณด์žฅํ•œ๋‹ค๋Š” EJB์˜ ์•ฝ์†๊ณผ ๋‹ฌ๋ฆฌ, ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง€๋ฉฐ ํ™•์žฅ์ด ์–ด๋ ค์›€

EJB ๋‹จ์ ์„ ๊ทน๋ณตํ•˜๊ธฐ์œ„ํ•˜ ๋งŒ๋“ค์–ด์ง„ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ Spring

  • Spring์ด๋ผ๋Š” ์ด๋ฆ„์˜ ๊ธฐ์›์€ ์ „ํ†ต์ ์ธ EJB๋ฅผ “๊ฒจ์šธ”์— ๋น—๋Œ€์–ด “๊ฒจ์šธ”์„ ์ง€๋‚ด๊ณ  “๋ด„”์œผ๋กœ ์ƒˆ๋กœ์šด ์‹œ์ž‘์„ ์˜๋ฏธ
  • EJB๊ฐ€ ์ œ๊ณตํ–ˆ๋˜ ๋Œ€๋ถ€๋ถ„์˜ ๊ธฐ๋Šฅ์„ ์ผ๋ฐ˜ POJO(Plain Old Java Object)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•จ – ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์˜ ๋ณต์žก์„ฑ์„ ์ค„์ด๊ธฐ ์œ„ํ•œ ๋ชฉ์ ์œผ๋กœ ๊ฐœ๋ฐœ๋จ

 


 




 

๐Ÿ”ธ ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ ๊ธฐ๋Šฅ

  1. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰์— ํ•„์š”ํ•œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ณต์žฅ
    • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰์— ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฐ์ฒด์˜ ์ƒ์„ฑ์„ ์Šคํ”„๋ง์—๊ฒŒ ์œ„์ž„ํ•œ๋‹ค
    • Controller ๊ฐ์ฒด , Service ๊ฐ์ฒด , DAO ๊ฐ์ฒด
  2. ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ๊ฐ์ฒด๋“ค๊ฐ„์˜ ์˜์กด๊ด€๊ณ„์— ๋งž๊ฒŒ ๊ฐ์ฒด๋ฅผ ์กฐ๋ฆฝํ•œ๋‹ค
    • ์˜์กด์„ฑ ์ฃผ์ž… Dependency Injection์„ ์ง€์›ํ•œ๋‹ค
  3. ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—‘์„ธ์Šค ๊ธฐ์ˆ ๊ณผ ์—ฐ๋™์„ ์ง€์›ํ•œ๋‹ค
    • ibatis , mybatis , JPA , hibernate ๋“ฑ๋“ฑ
  4. ์Šคํ”„๋ง ํ”„๋ ˆ์ž„ ์›Œํฌ๋Š” ๊ด€์ ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ™œ์šฉํ•œ ๊ณตํ†ต๊ธฐ๋Šฅ ๊ฐœ๋ฐœ์„ ์ง€์›ํ•œ๋‹ค
    • ๊ด€์ ์ง€ํ–ฅ

Spring์€ ์›น์„ ๋งŒ๋“œ๋Š” ๋„๊ตฌ๊ฐ€ ์•„๋‹ˆ๋‹ค

DI๋ฅผ ์ด์šฉํ•˜์—ฌ JAVA ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ

์—ฌ๊ธฐ์—์„œ ์ถ”๊ฐ€์ ์œผ๋กœ ์›น MVC๋ชจ๋“ˆ์„ ์ œ๊ณตํ•˜์—ฌ ์›น์„ ํšจ๊ณผ์ ์œผ๋กœ ๋งŒ๋“ค์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๊ฒƒ ๋ฟ์ด๋‹ค.


 

๐Ÿ”ถ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

 

์Šคํ”„๋ง ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ข…๋ฅ˜

์ข…๋ฅ˜ ์—ญํ• 
Spring  MVC MVC ํŒจํ„ด์˜ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ
Spring  JDBC ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—‘์„ธ์Šค ์ง€์›
Spring  ORM
Spring  AOP ๊ด€์  ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐœ๋ฐœ
Spring  Bean ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ ์ œ๊ณต 

=> ์˜์กด์„ฑ ์ฃผ์ž… ์ง€์›
Spring Core
Spring Context
Spring WEB

 

๐Ÿ“Œ ์ฃผ์š” ๋ชจ๋“ˆ

1. Transaction : ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ๋ฅผ ์ง€์›
2. ORM , JDBC_DAO : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—‘์„ธ์Šค ์ง€์›
3. MVC : MVC ํŒจํ„ด์˜ ์›นํŽ˜์ด์ง€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ
4. AOP : ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐœ๋ฐœ
5. Bean : ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ง€์› → ์˜์กด์„ฑ ์ฃผ์ž… ์ง€์›
6. Web : ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ง€์› → ์˜์กด์„ฑ ์ฃผ์ž… ์ง€์›
7.Context : ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ง€์› → ์˜์กด์„ฑ ์ฃผ์ž… ์ง€์›

 


 

๐Ÿ”ธ Spring Container

 

  • ์Šคํ”„๋ง ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋ถ€๋ถ„์ค‘ ํ•˜๋‚˜
  • ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๋Š” IoC ์™€ DI์˜ ๊ตฌํ˜„์ฒด๋‹ค
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฐ์ฒด์™€ ๊ทธ ๊ฐ์ฒด๋“ค ์‚ฌ์ด์˜ ์˜์กด์„ฑ์„ ๊ด€๋ฆฌํ•œ๋‹ค 

๐Ÿ“Œ ๊ฐ์ฒด์˜ ๋ผ์ดํ”„ ์‚ฌ์ดํด๊ด€๋ฆฌ ? ๊ฐ์ฒด์˜ ์ƒ์„ฑ , ์œ ์ง€ , ํ๊ธฐ๋ฅผ ๋‹ด๋‹น

  • ์„ค์ •์ •๋ณด (XML, ์–ด๋…ธํ…Œ์ด์…˜์œผ๋กœ ์„ค์ • ) ๋ฅผ ์ฝ์–ด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์˜์กด์„ฑ์„ ์ฃผ์ž… 
  • ์ปจํ…Œ์ด๋„ˆ : ๊ฐ์ฒด์˜ ๋ผ์ดํ”„ ์‚ฌ์ดํด์„ ๊ด€๋ฆฌํ•˜๊ณ  , ๊ฐ์ฒด๋ฅผ ์ œ๊ณตํ•œ๋‹ค

 

์Šคํ”„๋ง์˜ ์ฃผ์š” ์ปจํ…Œ์ด๋„ˆ ( ์ธํ„ฐํŽ˜์ด์Šค )

  • BeanFactory
    • Beans ๋ชจ๋“ˆ์—์„œ ์ œ๊ณต
    • ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์˜ ๊ฐ€์žฅ ํ•ต์‹ฌ์ ์ธ ๊ธฐ๋Šฅ์ด ์ •์˜๋œ ์ธํ„ฐํŽ˜์ด์Šค
    • ๊ฐ์ฒด ์ƒ์„ฑ , ๊ฐ์ฒด ์กฐ๋ฆฝ ๊ธฐ๋Šฅ๊ณผ ๊ด€๋ จ๋œ ํ‘œ์ค€์ด ์ •์˜๋˜์–ด์žˆ๋‹ค
    • ๊ตฌํ˜„ ํด๋ž˜์Šค - XmlBeanFactory
  •  ApplicationContext
    • BeanFactory ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์†๋ฐ›์•„์„œ ์ •์˜๋œ ์ธํ„ฐํŽ˜์ด์Šค๋‹ค
    • BeanFactory ์ธํ„ฐํŽ˜์ด์Šค์— ์ •์˜๋œ ๊ธฐ๋Šฅ ์™ธ์— AOP , ๊ตญ์ œํ™”์ฒ˜๋ฆฌ , ์ด๋ฒคํŠธ์ฒ˜๋ฆฌ์™€ ๊ด€๋ จ๋œ ํ‘œ์ค€์ด ์ •์˜๋˜์–ด ์žˆ๋‹ค.
    • ๊ตฌํ˜„ํด๋ž˜์Šค
      • FileSystemXmlApplicationContext
      • ClasspathXmlApplicationContext
      • GenericXmlApplicationContext
      • AnnotationConfigApplicationContext
  • WebApplicationContext
    • ApplicationContext ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์†๋ฐ›์•„์„œ ์ •์˜๋œ ์ธํ„ฐํŽ˜์ด์Šค
    • ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ์€ ApplicationContext์™€ ๋™์ผํ•˜๋‹ค
    • ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ ํ•ฉํ•œ ์Šคํ”„๋ง์ปจํ…Œ์ด๋„ˆ
    • ๊ตฌํ˜„ ํด๋ž˜์Šค
      • XmlWebApplicationContext

 

 

์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ

 

1. ์‘์šฉํ”„๋กœ๊ทธ๋žจ

public static void main(String[] args) {
	ApplicationContext ctx = new ClassPathXmlApplication("์„ค์ • ํŒŒ์ผ ๊ฒฝ๋กœ ๋ฐ ์ด๋ฆ„");
	UserDao userDao = ctx.getBean(UserDao.class);
}

 

2. ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœ๊ทธ๋žจ
 2 - 1 web.xml ์—์„œ ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์„ค์ •ํ•œ๋‹ค

<!---
 ์Šคํ”„๋ง ์„ค์ •ํŒŒ์ผ์˜ ๊ฒฝ๋กœ ๋ฐ ์ด๋ฆ„์„ ์„ค์ •
    <context-param/> ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค
    <context-param/> ํƒœ๊ทธ๋กœ ์„ค์ •ํ•œ ๊ฐ’์€ ์›น์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ServletContext ๊ฐ์ฒด์— ์ดˆ๊ธฐํ™” ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ €์žฅ๋œ๋‹ค.
--->
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/spring/context-root.xml , /WEB-INF/spring.context-db.xml</param-value>
</context-param>

<servlet>
    <servlet-name>frontController</servlet-name>
    <servlet-class>kr.co.jhta.model2.FrontControllerServlet</servlet-class>
    <init-param>
        <param-name>base-package</param-name>
        <param-value>com.sample.controller</param-value>
    </init-param>
</servlet

 

A. <context-param>์œผ๋กœ ์„ค์ •ํ•œ ์ •๋ณด๋Š” ServletContext ๊ฐ์ฒด์— ์ดˆ๊ธฐํ™” Parameter๋กœ ์ €์žฅ๋œ๋‹ค
๐Ÿ’ก ServletContext์˜ ์ดˆ๊ธฐํ™”Parameter๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ชจ๋“  Servlet , ๋ชจ๋“  JSP ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค

B. <init-param> ์œผ๋กœ ์„ค์ •ํ•œ ์ •๋ณด๋Š” ํ•ด๋‹น Servlet์— ์—ฐ๊ฒฐ๋œ ServletConfig์˜ ์ดˆ๊ธฐํ™” parameter๋กœ ์ €์žฅ๋œ๋‹ค
๐Ÿ’ก ServletConfig์˜ ์ดˆ๊ธฐํ™”parameter๋Š” ์—ฐ๊ฒฐ๋œ Servlet์—๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค

728x90

'Back_End > Spring' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Spring MVC , Controller  (1) 2024.03.12
MyBatis  (4) 2024.03.12
Spring AOP  (0) 2024.03.12
๋นŒ๋“œ๋„๊ตฌ Maven  (0) 2024.03.11
Maven์ด ๋ญ”๋ฐ ?  (1) 2024.02.27