Spring ์ด๋ž€

DOYOUNG KIMยท2023๋…„ 12์›” 1์ผ
0

Springํ”„๋ ˆ์ž„์›Œํฌ

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

๐Ÿ’ป ์Šคํ”„๋ง ํ•ต์‹ฌ ๊ธฐ์ˆ  - ๊ธฐ์ดˆ
ํ•ด๋‹น ๊ฐ•์˜๋Š” ๊น€์˜ํ•œ๋‹˜์˜ ์Šคํ”„๋ง ํ•ต์‹ฌ ์›๋ฆฌ- ๊ธฐ์ดˆ ๊ฐ•์˜๋ฅผ ์ˆ˜๊ฐ•ํ•˜์—ฌ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์€ ๊ฐ„๋žตํ•˜๊ฒŒ ๊ธฐ๋กํ•˜๋Š” ๊ธฐ๋ก์žฅ
์Šคํ”„๋ง ํ•ต์‹ฌ ์›๋ฆฌ ๊ธฐ์ดˆ ๊ฐ•์˜

1. Spring

์Šคํ”„๋ง ์ƒํƒœ๊ณ„

ํ•„์ˆ˜์„ ํƒ
Spring Framework, Spring BootSpring data, session, security, Rest Docs, Batcgh Cloud

Spring Batch : ๋ฐฐ์น˜ ์ฒ˜๋ฆฌ ๊ธฐ์ˆ ์˜ ํŠนํ™”๋œ ๊ธฐ๋Šฅ ๐Ÿ”ง

Spring Framework

๊ธฐ์ˆ ๋ช…์š”์•ฝ
ํ•ต์‹ฌ ๊ธฐ์ˆ ์Šคํ”„๋ง DI ์ปจํ…Œ์ด๋„ˆ, AOP, ์ด๋ฒคํŠธ ๋“ฑ
์›น ๊ธฐ์ˆ ์Šคํ”„๋ง MVC, ์Šคํ”„๋ง WebFlux
๋ฐ์ดํ„ฐ ์ ‘๊ทผ ๊ธฐ์ˆ ํŠธ๋žœ์ ์…˜, JDBC, ORM, XML
๊ธฐ์ˆ  ํ†ตํ•ฉ์บ์‹œ, ์ด๋ฉ”์ผ, ์›๊ฒฉ์ ‘๊ทผ, ์Šค์ผ€์ค„๋ง
ํ…Œ์ŠคํŠธ์Šคํ”„๋ง ๊ธฐ๋ฐ˜ ํ…Œ์ŠคํŠธ ์ง€์›
์–ธ์–ด์ฝ”ํ‹€๋ฆฐ, ๊ทธ๋ฃจ๋น„

Spring Boot

์Šคํ”„๋ง์„ ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›, ์ตœ๊ทผ์—๋Š” ๊ธฐ๋ณธ
๊ธฐ๋ณธ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ์™œ ์‚ฌ์šฉํ•˜๋‚˜
๋จผ์ € ์Šคํ”„๋ง์˜ ๊ณ ์งˆ ๋ฌธ์ œ์ธ ์„ค์ •์„ ์‰ฝ๊ฒŒ ํ•ด์ค€๋‹ค.

  • ๋‹จ๋…์œผ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์Šคํ”„๋ง ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‰ฝ๊ฒŒ ์ƒ์„ฑ
  • Tomcat ๊ฐ™์€ ์›น ์„œ๋ฒ„๋ฅผ ๋‚ด์žฅํ•ด์„œ ๋ณ„๋„์˜ ์›น ์„œ๋ฒ„๋ฅผ ์„ค์น˜ X
  • ์†์‰ฌ์šด ๋นŒ๋“œ ๊ตฌ์„ฑ์„ ์œ„ํ•œ Starter ์ข…์†์„ฑ ์ œ๊ณต
  • ์Šคํ”„๋ง๊ณผ 3rd parth(์™ธ๋ถ€) ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ž๋™ ๊ตฌ์„ฑ
  • ๋ฉ”ํŠธ๋ฆญ, ์ƒํƒœํ™•์ธ, ์™ธ๋ถ€ ๊ณ ์„ฑ ๊ฐ™์€ ํ”„๋กœ๋•์…˜ ์ค€๋น„ ๊ธฐ๋Šฅ ์ œ๊ณต
  • ๊ด€๋ก€์— ์˜ํ•œ ๊ฐ„๊ฒฐํ•œ ์„ค์ •

์‚ฌ์‹ค Spring ํ”„๋ ˆ์ž„์›Œํฌ๋งŒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๋ฐ”๋กœ ๋ถ€ํŠธ๋ฅผ ์‚ฌ์šฉํ•ด์„œ Spring ์˜ ์–ด๋ ค์›€์„ ๋ชจ๋ฅด์ง€๋งŒ ํ™•์‹คํžˆ ์Šคํƒ€ํ„ฐ๋งŒ ๋งŒ๋“ค๊ณ  ์‹คํ–‰ํ•˜๋Š” ๊ฑด ํŽธํ–ˆ๋‹ค ๐Ÿ˜Ž

์Šคํ”„๋ง ๋‹จ์–ด

์Šคํ”„๋ง์ด๋ผ๋Š” ๋ง์€ ๋ฌธ๋งฅ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ฒŒ ๋œ๋‹ค.

  • ์Šคํ”„๋ง DI ์ปจํ…Œ์ด๋„ˆ ๊ธฐ์ˆ 
  • ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ
  • ์Šคํ”„๋ง ์ƒํƒœ๊ณ„ ์ „์ฒด

Spring์€ ์™œ ์ƒ๊ฒผ๋‚˜?

์Šคํ”„๋ง์€ ์ž๋ฐ” ์–ธ์–ด ๊ธฐ๋ฐ˜ ํ”„๋ ˆ์ž„์›Œํฌ
์ž๋ฐ”๋Š” ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด
์Šคํ”„๋ง์€ ๊ฐ์ฒด ์ง€ํ–ฅ ์–ธ์–ด๊ฐ€ ๊ฐ€์ง„ ๊ฐ•๋ ฅํ•œ ํŠน์ง•์„ ์‚ด๋ ค๋‚ด๋Š” ํ”„๋ ˆ์ž„์›Œํฌ
์Šคํ”„๋ง์€ ์ข‹์€ ๊ฐ์ฒด ์ง€ํ–ฅ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์„ ๋„์™€์ฃผ๋Š” Framework

DI ์ปจํ…Œ์ด๋„ˆ์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•์„ ํ†ตํ•ด์„œ ๊ฐ์ฒด ์ง€ํ–ฅ ์–ธ์–ด์˜ ํŠน์ง•์„ ์ž˜ ์‚ด๋ ค์ฃผ๋Š”๊ฒŒ ํ•ต์‹ฌ์ด๋‹ค


2. ๊ฐ์ฒด ์ง€ํ–ฅ ์–ธ์–ด

OOP

๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋žจ์„ ๋ช…๋ น์–ด์˜ ๋ชฉ๋ก์œผ๋กœ ๋ณด๋Š” ์‹œ๊ฐ์ด ์•„๋‹Œ ๋…๋ฆฝ๋œ ๋‹จ์œ„
๊ฐ์ฒด๋“ค์˜ ๋ชจ์ž„์œผ๋กœ ํŒŒ์•…ํ•˜๊ณ ์ž ํ•œ๋‹ค. ๋˜ ๊ฐ์ฒด๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ฃผ๊ณ  ๋ฐ›๊ณ  ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ
๊ฐ์ฒด ์ง€ํ–ฅ์€ ์œ ์—ฐํ•˜๊ณ  ๋ณ€๊ฒฝ์ด ์šฉ์ดํ•˜๋‹ค.

๋‹คํ˜•์„ฑ

์—ญํ• ๊ณผ ๊ตฌํ˜„์œผ๋กœ ์„ธ์ƒ์„ ๊ตฌ๋ถ„ํ•œ๋‹ค.
์šด์ „์ž๋Š” ์ž๋™์ฐจ ์ข…๋ฅ˜๊ฐ€ ๋ฐ”๋€Œ์–ด๋„ ์ž๋™์ฐจ์˜ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์šด์ „ ๊ฐ€๋Šฅํ•˜๋‹ค.

์ž๋™์ฐจ์˜ ์ธํ„ฐํŽ˜์ด์Šค์— ๋”ฐ๋ผ์„œ ๊ตฌํ˜„ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€๋Šฅํ•œ ์ผ์ด๋‹ค.
์šด์ „์ž๋ฅผ ์œ„ํ•ด์„œ ์ด๋ ‡๊ฒŒ ๊ฐœ๋ฐœ๋˜์—ˆ๋‹ค.
์ฆ‰ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋‚ด๋ถ€ ๋ณ€๊ฒฝ์„ ๋ชฐ๋ผ๋„ ์‚ฌ์šฉ๋ฒ•์€ ๋™์ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‚ด๋ถ€์˜ ๋‚ด์šฉ์€ ๋ฌดํ•œํžˆ ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๋‹ค.

ํด๋ผ์ด์–ธํŠธ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ณ  ๋ณ€๊ฒฝ์ด ๊ฐ€๋Šฅํ•˜๋‹ค ๐Ÿ”ง


์•„๋ž˜ ์˜ˆ์‹œ๋ฅผ ์ถ”๊ฐ€๋กœ ํ™•์ธํ•ด๋ณด์ž
๋กœ๋ฏธ์˜ค, ์ค„๋ฆฌ์—ฃ ์ด๋ผ๋Š” ์—ญํ• ์„ ๊ฐ ๋ฐฐ์šฐ๋“ค์ด ๊ตฌํ˜„ํ•œ๋‹ค.
์ฆ‰ ๊ตฌํ˜„ํ•˜๋Š” ์‚ฌ๋žŒ์ด ๋ฐ”๋€Œ์–ด๋„ ์—ญํ• ์„ ๋ˆ„๊ตฐ๊ฐ€๋Š” ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ตฌํ˜„ํ•˜๋Š” ์ž๊ฐ€ ๋ณธ์ธ์˜ ์—ญํ• ๋งŒ ์ˆ˜ํ–‰ํ•ด๋„ ์„œ๋กœ๊ฐ€ ์„œ๋กœ์—๊ฒŒ ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š”๋‹ค.

์ด๊ฒƒ์ด ์œ ์šฉํ•˜๊ณ  ๋ณ€๊ฒฝ์ด ์šฉ์ดํ•˜๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

ex) ์ •๋ ฌ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ• ๋•Œ ๋” ์ข‹์€ ์†๋„์˜ ์ •๋ ฌ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ๋ฐ”๊พธ๋ฉด ๋œ๋‹ค.
์ •๋ ฌ์ด๋ผ๋Š” ์—ญํ• ์„ ๋ฒ„๋ธ”,์‚ฝ์ž… ์ •๋ ฌ์ด๋ผ๋Š” ๊ตฌํ˜„์ด ์ˆ˜ํ–‰ํ•˜๋ฉด๋จ

์—ญํ• ๊ณผ ๊ตฌํ˜„์„ ๋ถ„๋ฆฌํ•˜๋ฉด ์–ป๋Š” ์žฅ์ ์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ์š”์•ฝํ•ด๋ณด์ž

  • ํด๋ผ์ด์–ธํŠธ๋Š” ๋Œ€์ƒ์˜ ์—ญํ• (์ธํ„ฐํŽ˜์ด์Šค)๋งŒ ์•Œ๋ฉด ๋จ
  • ํด๋ผ์ด์–ธํŠธ๋Š” ๊ตฌํ˜„ ๋Œ€์ƒ ๋‚ด๋ถ€ ๋ชฐ๋ผ๋„ OK
  • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋‚ด๋ถ€ ๊ตฌ์กฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜์–ด๋„ ์˜ํ–ฅ X
  • ํด๋ž‘์–ธํŠธ๋Š” ๊ตฌํ˜„ ๋Œ€์ƒ ์ž์ฒด ๋ณ€๊ฒฝ์‹œ์—๋„ ์˜ํ–ฅ X

Java์—์„œ ์—ญํ• ์€ Interface, ๊ตฌํ˜„์€ ๊ตฌํ˜„ํ•œ ํด๋ž˜์Šค ๋˜๋Š” ๊ฐ์ฒด
ex) ์ด์ „ ์ž…๋ฌธ ๊ฐ•์˜์—์„œ ์—ฌ๋Ÿฌ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๋งŒ๋“ค์—ˆ์„๋•Œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์—ญํ• , jdbc JPA ๋“ฑ์ด ๊ตฌํ˜„์ฒด

๊ฐ์ฒด๋Š” ํ˜‘๋ ฅ ๊ด€๊ณ„

ํ˜ผ์ž์„œ ์กด์žฌํ•˜๋Š” ๊ฐ์ฒด๋Š” ์—†์Œ
ํด๋ผ์ด์–ธํŠธ : ์š”์ฒญ / ์„œ๋ฒ„ : ์‘๋‹ต

ํด๋ผ์ด์–ธํŠธ -----> ์„œ๋ฒ„
ํด๋ผ์ด์–ธํŠธ -----> ์„œ๋ฒ„ + ํด๋ผ์ด์–ธํŠธ ----> ์„œ๋ฒ„

์ž๋ฐ” ์˜ค๋ฒ„๋ผ์ด๋”ฉ์œผ๋กœ ๋‹คํ˜•์„ฑ ๊ตฌํ˜„

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

ํด๋ผ์ด์–ธํŠธ(๋ฉค๋ฒ„ ์„œ๋น„์Šค) --------> ๋ฉค๋ฒ„ ๋ฆฌํฌ์ง€ ํ† ๋ฆฌ <---- (๋ฉ”๋ชจ๋ฆฌ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ, JDBC ๋ฆฌํฌ์ง€ํ† ๋ฆฌ)

๋‹คํ˜•์„ฑ์˜ ๋ณธ์งˆ

์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ ๊ฐ์ฒด ์ธ์Šคํ„ด์Šค๋ฅผ ์‹คํ–‰ ์‹œ์ ์— ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ
ํ˜‘๋ ฅ์ด๋ผ๋Š” ๊ฐ์ฒด ์‚ฌ์ด์˜ ๊ด€๊ณ„๋ฅผ ์œ ์˜ํ•ด์•ผํ•จ

ํด๋ผ์ด์–ธํŠธ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ์„œ๋ฒ„์˜ ๊ตฌํ˜„ ๊ธฐ๋Šฅ์„ ๋ณ€๊ฒฝ๊ฐ€๋Šฅ(์œ ์—ฐํ•˜๊ฒŒ!!!)

์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์•ˆ์ •์ ์œผ๋กœ ์„ค๊ณ„ํ•˜๋Š” ๊ฒƒ์ด ๋งค์šฐ ์ค‘์š”ํ•˜๋‹ค
์ฆ‰ ๊ฐœ๋ฐœ ์‹œ์— ๋‹จ์ˆœํžˆ ๊ตฌํ˜„ํ•˜๋Š”๊ฒŒ ์ค‘์š”ํ•œ๊ฒŒ ์•„๋‹ˆ๋ผ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ํ•ด๋‹น ๊ตฌํ˜„์ฒด๊ฐ€ ์–ด๋–ค ์—ญํ• ์„ ํ• ์ง€ ๋ˆ„๊ตฌ๋ž‘ ํ˜‘๋ ฅ ๊ด€๊ณ„๋ฅผ ๊ฐ€์งˆ์ง€ ์ƒ๊ฐํ•˜๋Š”๊ฒŒ ์ค‘์š”

์ธํ„ฐํŽ˜์ด์Šค ์ž์ฒด๊ฐ€ ๋ณ€ํ•ด์•ผํ•˜๋ฉด ํด๋ผ์ด์–ธํŠธ, ์„œ๋ฒ„ ๋ชจ๋‘์— ํฐ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•จ
์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋ณ€ํ™”๊ฐ€ ์—†๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์„ค๊ณ„ํ•˜๋Š”๊ฒŒ ์ค‘์š”

์Šคํ”„๋ง๊ณผ ๊ฐ์ฒด์ง€ํ–ฅ

์Šคํ”„๋ง์€ ๋‹คํ˜•์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•ด์„œ ์ด์šฉํ•˜๊ฒŒ ํ•ด์คŒ
IoC, DI๋Š” ๋‹คํ˜•์„ฑ์„ ํ™œ์šฉํ•ด์„œ ์—ญํ• ๊ณผ ๊ตฌํ˜„์„ ํŽธ๋ฆฌํ•˜๊ฒŒ ๋‹ค๋ฃฐ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์คŒ
์Šคํ”„๋ง์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ตฌํ˜„์„ ํŽธ๋ฆฌํ•˜๊ฒŒ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Œ!

๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„ 5๊ฐ€์ง€ ์›์น™ : SOLID

profile
๋งค์ผ 1%์”ฉ ์„ฑ์žฅํ•˜๋Š” ๊ฐœ๋ฐœ ๊ณต๋ถ€ ๋ธ”๋กœ๊ทธ ์ž…๋‹ˆ๋‹ค.

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

๊ด€๋ จ ์ฑ„์šฉ ์ •๋ณด