Spring Framework1(๊ฐœ๋…๐Ÿ’ก)

์œ ์„ฑํ›ˆยท2023๋…„ 1์›” 29์ผ
0

Spring Framework๊ณต๋ถ€

๋ชฉ๋ก ๋ณด๊ธฐ
1/7



๐Ÿ“Œ์Šคํ”„๋ง ํ”„๋ ˆ์ž„ ์›Œํฌ vs ์ „์ž์ •๋ณด ํ‘œ์ค€ ํ”„๋ ˆ์ž„ ์›Œํฌ vs ์Šคํ”„๋ง ๋ถ€ํŠธ

๐Ÿ”Ž์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ(Spring Framework)

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

๐Ÿ”Ž์ „์ž์ •๋ณด ํ‘œ์ค€ ํ”„๋ ˆ์ž„ ์›Œํฌ

  • ๊ณต๊ณต๊ธฐ๊ด€, ๋‚˜๋ผ์—์„œ ๋ฐ€๊ณ  ์žˆ๋Š” ๊ฒƒ(์Šคํ”„๋ง ํ”„๋ ˆ์ž„ ์›Œํฌ๋ž‘ ๊ฐ™๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.)

๐Ÿ”Ž์Šคํ”„๋ง ๋ถ€ํŠธ(Spring Boot)

  • ์˜์กด์„ฑ์„ ์Šคํ”„๋ง์— ๋ณด๋‹ค ์‰ฝ๊ฒŒ ์„ค์ •์ด ๊ฐ€๋Šฅํ•˜๊ณ  ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ์ž๋™์œผ๋กœ ํ•ด์ค€๋‹ค. (์Šคํ”„๋ง์„ ๋” ์‰ฝ๊ฒŒ ์ด์šฉํ•˜๊ธฐ ์œ„ํ•œ ๋„๊ตฌ)
  • ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ๊ธฐ๋Šฅ์ด ๋งŽ์€ ๋Œ€์‹  ํ™˜๊ฒฝ์„ค์ •์ด ๋ณต์žกํ•˜๋‹ค๋Š” ๋‹จ์ ์„ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•ด ๋‚˜์™”๋‹ค.
  • ์„ค์ •์— ์žˆ์–ด ๋งŽ์€ ๋ถ€๋ถ„์„ ์ž๋™ํ™” ํ•˜์—ฌ ์‚ฌ์šฉ์ž ํŽธ์˜์„ฑ์„ ๋†’์˜€๋‹ค.
  • ์Šคํ”„๋ง ๋ถ€ํŠธ starter ์˜์กด์„ฑ๋งŒ ์ถ”๊ฐ€ํ•˜๋ฉด ๋ฐ”๋กœ API๋ฅผ ์ •์˜ ํ•˜๊ณ , ๋‚ด์žฅ๋œ ํ†ฐ์บฃ ๋˜๋Š” ์ œํ‹ฐ๋กœ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
    (starter๋ž€ maven ๋˜๋Š” gradle์— ํ•„์š”ํ•œ ์˜์กด์„ฑ์„ ์ฃผ์ž…ํ•˜๋ฉด ์Šคํ”„๋ง ๋ถ€ํŠธ๊ฐ€ ์•Œ์•„์„œ ๊ทธ์— ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์„ ์•Œ์•„์„œ ๋ฐ›์•„์˜จ๋‹ค.)
  • ์‹คํ–‰ํ™˜๊ฒฝ, ์˜์กด์„ฑ ๊ด€๋ฆฌ๋“ฑ์˜ ์ธํ”„๋ผ ๊ด€๋ จ ๋“ฑ์„ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š๊ณ  ๋ฐ”๋กœ ์ฝ”๋”ฉ์„ ์‹œ์ž‘ํ•˜๋ฉด ๋œ๋‹ค.


๐Ÿ“Œํ”„๋ ˆ์ž„ ์›Œํฌ์™€ ์Šคํ”„๋ง ๋ถ€ํŠธ ์ฐจ์ด์ 

  • 3๋ฒ„์ „(ํ”„๋ ˆ์ž„์›Œํฌ) , 4๋ฒ„์ „(์Šคํ”„๋ง ๋ถ€ํŠธ) == ์‰ฝ๊ฒŒ ๋ฒ„์ „ ์ฐจ์ด๋ผ๊ณ  ์ƒ๊ฐ
  • spring boot์˜ ๊ฒฝ์šฐ Embed Tomcat์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋”ฐ๋กœ Tomcat์„ ์„ค์น˜ํ•˜๊ฑฐ๋‚˜ ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.
  • spring boot๋Š” starter์„ ํ†ตํ•ด dependecy์ž๋™ํ™”(spring framework์—์„œ๋Š” ๊ฐ๊ฐ์˜ dependency๋“ค์˜ ํ˜ธํ™˜๋˜๋Š” ๋ฒ„์ „์„ ์ผ์ผ์ด ๋งž์ถ”์–ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค)
  • spring boot๋Š” Xml์„ค์ •์„ ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.
  • spring boot๋Š” jar file์„ ์ด์šฉํ•ด ์ž๋ฐ” ์˜ต์…˜๋งŒ์œผ๋กœ ๋ฐฐํฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.



๐Ÿ“ŒSpring Framework๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์ „์— ์•Œ๊ณ  ๊ฐ€๊ธฐ

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ž€โ“

  • ์ด๋ฏธ ์ž‘์„ฑํ•ด ๋†“์€ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์™€์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ.
  • ํŠน์ • ๊ธฐ๋Šฅ ์ฝ”๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์™€์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ.

API๋ž€โ“

  • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์ด ๋ชจ์—ฌ ์žˆ๋Š” ๊ฒƒ.

ํ”„๋ ˆ์ž„์›Œํฌ๋ž€โ“

  • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋ฉ์น˜๊ฐ€ ์ปค์ง€๋ฉด ํ”„๋ ˆ์ž„์›Œํฌ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.
  • ์ž‘์—…์„ ํ• ๋•Œ ์งœ์—ฌ์ง„ ํ‹€์—์„œ ์ž‘์—…์„ ํ•˜๋Š” ๊ฒƒ
  • ex. ์ž๋™์ฐจ๋ฅผ ๋งŒ๋“ค๋•Œ ์ฒ˜์Œ ๋ถ€ํ„ฐ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š” ์žฅ๋น„, ๋„๊ตฌ(๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ)๋“ค์ด ํ•„์š”ํ•˜๋‹ค.
  • ex. ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ์ด ๊ฐ™์€ ์ž๋™์ฐจ๋ฅผ ๋งŒ๋“ค ๊ฒฝ์šฐ ๋‹ค๋ฅธ ๊ฒฐ๊ณผ, ํ’ˆ์งˆ์ด ๋ฐœ์ƒํ•œ๋‹ค. โ–ถ๏ธ ์—ฌ๋Ÿฌ ๊ธฐ์ˆ ์ž ์—๊ฒŒ ๊ฐ™์€ ์ž๋™์ฐจ ์™ธํ˜•์„ ์ค€๋‹ค(ํ”„๋ ˆ์ž„ ์›Œํฌ) โ–ถ๏ธ ๋‚ด๋ถ€์— ๋“ค์–ด๊ฐ€๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ์ง€์‹œ๋ฅผ ๋‚ด๋ฆฐ๋‹ค.
  • ํ”„๋ ˆ์ž„ ์›Œํฌ๋ฅผ ๊ณต๋ถ€ ํ•ด์•ผ ์–ด๋–ค ๊ธฐ๋Šฅ์„ ์ˆ˜์ • ํ•˜๊ณ  ๋นผ๊ณ  ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋˜‘๊ฐ™์€ ํ‹€, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์ด ๋ชจ์—ฌ์žˆ๋Š” ๊ฒƒ์„ ์ œ๊ณตํ•ด์ฃผ๋Š” ๊ฒƒ์ด ํ”„๋ ˆ์ž„ ์›Œํฌ๋‹ค.(์—ฌ๋Ÿฌ ๊ฐœ๋ฐœ์ž์˜ ๊ฒฐ๊ณผ๋ฌผ์ด ๊ฐ™๊ฒŒ ๋‚˜์˜ค๋„๋ก, ์‹ค๋ ฅ ์ฐจ์ด๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด ์‹œ์ž‘ ๋˜์—ˆ๋‹ค.)
  • ๋ผˆ๋Œ€, ๊ทผ๊ฐ„์„ ์ด๋ฃจ๋Š” ์ฝ”๋“œ๋“ค์˜ ๋ฌถ์Œ.
  • ๊ฐœ๋ฐœ์ž๋Š” ๊ฐ ๊ฐœ๊ฐœ์ธ์˜ ๋Šฅ๋ ฅ์ฐจ์ด๊ฐ€ ํฐ ์ง์—…, ๊ฐœ๋ฐœ์ž ๊ตฌ์„ฑ์— ๋”ฐ๋ผ ํ”„๋กœ์ ํŠธ ๊ฒฐ๊ณผ ์—ญ์‹œ ํฐ ์ฐจ์ด๋ฅผ ๋‚ณ๋Š”๋‹ค โ–ถ๏ธ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•œ ๊ฒฐ๊ณผ๋ฌผ์ด ํ”„๋ ˆ์ž„ ์›Œํฌ
  • ํ”„๋กœ๊ทธ๋žจ์˜ ๊ธฐ๋ณธ ํ๋ฆ„์ด๋‚˜ ๊ตฌ์กฐ๋ฅผ ์ •ํ•˜๊ณ  ๋ชจ๋“  ํŒ€์›์ด ์ด ๊ตฌ์กฐ์— ์ž์‹ ์˜ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ฐœ๋ฐœ
  • ์žฅ์  : ๊ฐœ๋ฐœ์— ํ•„์š”ํ•œ ๊ตฌ์กฐ๋ฅผ ์ด๋ฏธ ์ฝ”๋“œ๋กœ ๋งŒ๋“ค์–ด ๋†“์•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹ค๋ ฅ์ด ๋ถ€์กฑํ•œ ๊ฐœ๋ฐœ์ž๋ผ๋„ ๋ฐ˜์ฏค ์™„์„ฑํ•œ ์ƒํƒœ์—์„œ ํ•„์š”ํ•œ ๋ถ€๋ถ„์„ ์กฐ๋ฆฝํ•˜๋Š” ํ˜•ํƒœ ๊ฐœ๋ฐœ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ํ”„๋ ˆ์ž„ ์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ผ์ •ํ•œ ํ’ˆ์งˆ์ด ๋ณด์žฅ ๋˜๋Š” ๊ฒฐ๊ณผ๋ฌผ์„ ์–ป์„ ์ˆ˜ ์žˆ๊ณ , ๊ฐœ๋ฐœ์ž ์ž…์žฅ์—์„œ๋Š” ์™„์„ฑ๋œ ๊ตฌ์กฐ ์—์„œ ์ž์‹ ์˜ ๋งก์€ ์ฝ”๋“œ๋ฅผ ๊ฐœ๋ฐœํ•ด์„œ ๋„ฃ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐœ๋ฐœ ์‹œ๊ฐ„ ๋‹จ์ถ•์ด ๊ฐ€๋Šฅ ํ•˜๋‹ค.
  • ์ด๋ฏธ ์ •ํ•ด์ ธ ์žˆ๋Š” ๊ฒƒ์ด ํ”„๋ ˆ์ž„ ์›Œํฌ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ํŽธํ•˜๋‹ค.(ex. Java์˜ collection, Mybatis(ํƒœ๊ทธ๋“ค์ด ์ •ํ•ด์ ธ ์žˆ๋‹ค.) โ–ถ๏ธ ์ผ์ข…์˜ ํ”„๋ ˆ์ž„์›Œํฌ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. )



๐Ÿ“ŒSpringFramework

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

0๊ฐœ์˜ ๋Œ“๊ธ€