
๐ก Spring์ ๊ณต๋ถํ๋ค๋ ๊ฒ์ ์น MVC ํจํด๊ณผ ํจ๊ป ์ํฐํ๋ผ์ด์ฆ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์กฐ๋ฅผ ๊น์ด ์ดํดํ๋ ๊ณผ์ ! ๐
๐น Spring Framework์ ์ฃผ์ ํน์ง
5๏ธโฃ Spring MVC (Model-View-Controller)
์น ์ ํ๋ฆฌ์ผ์ด์
๊ฐ๋ฐ์ ์ํ Spring์ ๋ํ์ ์ธ ์น ํ๋ ์์ํฌ.
MVC ํจํด์ ์ฌ์ฉํ์ฌ ์ ์ง๋ณด์์ฑ๊ณผ ํ์ฅ์ฑ์ ๋์.
Model: ๋น์ฆ๋์ค ๋ก์ง๊ณผ ๋ฐ์ดํฐ ๊ด๋ฆฌ.
View: ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ง๋ ํ๋ฉด (JSP, Thymeleaf ๋ฑ).
Controller: ์ฌ์ฉ์ ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ Model๊ณผ View๋ฅผ ์ฐ๊ฒฐ.
6๏ธโฃ Spring Boot
Spring Framework๋ฅผ ๋์ฑ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ๋ง๋ ํ๋ก์ ํธ.
๊ธฐ๋ณธ ์ค์ ๊ณผ ์๋ฒ ์ค์ ์ด ์๋ํ๋์ด ๊ฐ๋ฐ ์๋๊ฐ ๋น ๋ฆ.
"์ค์ ๋ณด๋ค๋ ๊ด๋ก(Convention over Configuration)" ์์น์ ๋ฐ๋ฆ.
๐ Spring Framework์ Spring Boot ์ฐจ์ด์
ํญ๋ชฉ Spring Framework Spring Boot
์ค์ ๋ฐฉ์ XML ๋๋ Java Config ๊ธฐ๋ณธ ์ค์ ์๋ํ (YAML, application.properties)
๋ด์ฅ ์๋ฒ ์์ (Tomcat, Jetty ๋ณ๋ ์ค์ ) Tomcat ๋ด์ฅ (์ฆ์ ์คํ ๊ฐ๋ฅ)
ํ๋ก์ ํธ ๋ณต์ก๋ ์ง์ ์ค์ ํด์ผ ํ ์์ ๋ง์ ์ด๊ธฐ ์ค์ ์ด ๊ฐํธ
๋ฐฐํฌ ๋ฐฉ์ WAR ํ์ผ ์ฌ์ฉ JAR๋ก ์คํ ๊ฐ๋ฅ (๋
๋ฆฝ ์คํํ ์ ํ๋ฆฌ์ผ์ด์
์ง์)
์ฃผ์ ๋ชฉ์ ๊ธฐ์กด ๋ ๊ฑฐ์ ์์คํ
์ ์ง๋ณด์, ์ปค์คํ
์ค์ ๋น ๋ฅธ ๊ฐ๋ฐ ๋ฐ ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ
์ฒ(MSA)
1๏ธโฃ IoC (Inversion of Control, ์ ์ด์ ์ญ์ )
๊ฐ์ฒด์ ์์ฑ ๋ฐ ์๋ช
์ฃผ๊ธฐ ๊ด๋ฆฌ๋ฅผ Spring ์ปจํ
์ด๋๊ฐ ๋ด๋น.
๊ฐ๋ฐ์๊ฐ ์ง์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ๊ด๋ฆฌํ ํ์ ์์ด, ํ์ํ ๊ฐ์ฒด๋ฅผ ์๋์ผ๋ก ์ฃผ์
๋ฐ์ ์ ์์.
2๏ธโฃ DI (Dependency Injection, ์์กด์ฑ ์ฃผ์
)
๊ฐ์ฒด ๊ฐ์ ์์กด ๊ด๊ณ๋ฅผ ์ค์ ํ ๋, ์ง์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๊ฒ์ด ์๋๋ผ Spring ์ปจํ
์ด๋๊ฐ ์๋์ผ๋ก ์ฃผ์
ํด์ค.
๊ฐ์ฒด ๊ฐ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถฐ ์ ์ง๋ณด์์ฑ๊ณผ ํ
์คํธ ์ฉ์ด์ฑ์ ๋์.
3๏ธโฃ AOP (Aspect-Oriented Programming, ๊ด์ ์งํฅ ํ๋ก๊ทธ๋๋ฐ)
๋ก๊ทธ ์ถ๋ ฅ, ๋ณด์, ํธ๋์ญ์
๊ด๋ฆฌ ๊ฐ์ ๊ณตํต ๊ธฐ๋ฅ์ ๋น์ฆ๋์ค ๋ก์ง๊ณผ ๋ถ๋ฆฌํ์ฌ ํก๋จ ๊ด์ฌ์ฌ(Cross-Cutting Concern) ์ฒ๋ฆฌ ๊ฐ๋ฅ.
์) ํธ๋์ญ์
๊ด๋ฆฌ, ๋ก๊น
, ๊ถํ ์ฒดํฌ ๋ฑ์ ์ฝ๋ ๋ณ๊ฒฝ ์์ด ์ ์ฉ ๊ฐ๋ฅ.
4๏ธโฃ ํธ๋์ญ์
๊ด๋ฆฌ (Transaction Management)
Spring์ ์ ์ธ์ ํธ๋์ญ์
(Declarative Transaction) ์ ํตํด ๋ฐ์ดํฐ๋ฒ ์ด์ค ํธ๋์ญ์
์ ์ฝ๊ฒ ์ ์ด.
๋ฐ์ดํฐ ์ ํฉ์ฑ์ ๋ณด์ฅํ๋ฉด์ ๋น์ฆ๋์ค ๋ก์ง๊ณผ ํธ๋์ญ์
์ ๋ถ๋ฆฌํ์ฌ ์ฝ๋ ์ ์ง๋ณด์๋ฅผ ์ฉ์ดํ๊ฒ ํจ.
โ ๋ ๊ฑฐ์ ํ๋ก์ ํธ ์ ์ง๋ณด์
โ ๊ธ์ต๊ถ, ๊ธฐ์
์์คํ
(๋ํ ์์คํ
์ ๊ด๋ฆฌ)
โ ์น ์ ํ๋ฆฌ์ผ์ด์
๊ฐ๋ฐ (Spring MVC)
โ REST API ๊ฐ๋ฐ (Spring Boot + Spring Web)
โ ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ
์ฒ (MSA) ๊ตฌ์ถ
โ ๋๊ท๋ชจ ํธ๋์ญ์
๊ด๋ฆฌ (Spring Data + JPA)
Spring Framework๋ ์๋ฐ ๊ธฐ๋ฐ์ ์ํฐํ๋ผ์ด์ฆ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์ฝ๊ฒ ๋ง๋ค์ด์ฃผ๋ ํ๋ ์์ํฌ๋ก, ์น ๊ฐ๋ฐ(Spring MVC), ํธ๋์ญ์ ๊ด๋ฆฌ, ๋ฐ์ดํฐ ์ฐ๋(Spring Data) ๋ฑ ๋ค์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ํนํ, Spring Boot๋ฅผ ํ์ฉํ๋ฉด ์ค์ ์ ์๋ํํ์ฌ ๋น ๋ฅด๊ฒ ๊ฐ๋ฐํ ์ ์์ผ๋ฉฐ, ๋ ๊ฑฐ์ ํ๋ก์ ํธ์์๋ ๊ธฐ์กด ์์คํ ์ ์ ์ง๋ณด์ํ ๋ Spring Framework๊ฐ ๋ง์ด ์ฌ์ฉ๋ฉ๋๋ค.