์ฒ์์ ๋์ถฉ ํ๋ก์ ํธ๋ฅผ ์์ํด๋ณด๋ คํ์ง๋ง,
์ด๋ด์๊ฐ! ์๋ ๊ฒ์ด ๋ฏธ์ฝํ๋ ์์ํ ์ ์์๋ค.
๊ทธ๋์ ๊ฐ์ฅ ๊ธฐ์ด์ ์ผ๋ก ์์์ผํ๋ ๊ฐ๋ ์ ์ฐจ๊ทผ์ฐจ๊ทผ ์ ๋ฆฌํด๋ณผ๊น ํ๋ค.
๋๋ฅ, Spring MVC๋?
์๋ง ์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ๋ฅผ ์ค๋นํ๊ฑฐ๋, IT๊ด๋ จ ์ ๊ณต์๋ผ๋ฉด ํ ๋ฒ์ ๋ค์ด๋ดค์ MVC.
์ด๋ฒ ๊ธฐํ์ ์์ธํ ์์๋ณด์.
๐ชฝ
"ํ๋ฆฐ ๋ด์ฉ์ด ์์ ์ ์์ต๋๋ค."
[ Hello World๋ฅผ ์ถ๋ ฅํ๊ธฐ ]
Spring - [IntelliJ] Hello Word ์ถ๋ ฅํ๊ธฐ
์์ฃผ ๊ฐ๋จํ ์ค์ต์ ํด๋ณผ๊นํ๋ค. Hello, World ์ถ๋ ฅํ๊ธฐ๐1. Spring initializr ์์ฑํ๊ธฐ. https://start.spring.io/ โก Dependencies - SpringWeb ์ ํํ๊ธฐ.โก Java ํด๋นํ๋ ๋ฒ์ ์ ์ ํํ๊ธฐ. โ๏ธ [Mac ๊ธฐ
post-this.tistory.com
1. MVC
- Model - View - Controller๋ก ๊ตฌ์ฑ๋์ด์๋ค.
- Model, View, Controller๋ ๋ ๋ฆฝ์ ์ผ๋ก ์์ง์ธ๋ค. (๊ฐ์ ๋งก์ ๋ถ์ผ๋ง ํด๊ฒฐํ๋ค)
- MVC ์ฌ์ฉ์, ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ ์ ์๋ค.
- MVC ์ฌ์ฉ์, ์ค๋ณต์ฝ๋ ์ ๊ฑฐ๊ฐ ์ฝ๊ณ ์ ์ง๋ณด์์ ์ข๋ค.
- MVC ์ฌ์ฉ์, ํ์ฅ์ฑ๊ณผ ์ ์ฐ์ฑ์ด ์ฆ๊ฐํ๋ค.
(1) View
- ์ฌ์ฉ์๊ฐ ๋ณด๋ ํ๋ฉด์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค.
- ์์๋ฅผ ๋ค์ด๋ณด์, ์ฌ์ฉ์๊ฐ ์น ๊ฒ์์ฐฝ์ [apple]์ด๋ผ๊ณ ๊ฒ์ํ๊ธธ ์์ฒญํ๋ค.
(2) Controller
- View์ Model์ ์ฐ๊ฒฐํด์ฃผ๋ ์ค๊ฐ์์ ์ํธ์์ฉ ์ญํ ์ ํด์ค๋ค.
- ์ฌ์ฉ์์ ์์ฒญ์ Controller๊ฐ ๋ฐ์๋ค. (DispatcherServlet๋ผ๋ Front Controller๊ฐ ๋ฐ์)
- Controller๋ ์ด ์์ฒญ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด [apple]์ด๋ ๋จ์ด๋ฅผ ๊ฐ์ง๊ณ ์์ Model์๊ฒ ์ ๋ฌํ๋ค.
(3) Model
- ๋ฐ์ดํฐ์ ๋น์ฆ๋์ค ๋ก์ง์ ๋ด๋นํ๋ค.
- ์ด๋ ํด๋ผ์ด์ธํธ์๊ฒ ์๋ต์ผ๋ก ๋๋ ค์ฃผ๋ ์์ ์ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ ๋ฐ์ดํฐ๋ฅผ Model์ด๋ผ ํ๋ค.
- Controller์๊ฒ ์จ ์์ฒญ์ ์ ๋ฐ์๋ค.
- Model์ [apple]์ด๋ ๋จ์ด ๊ด๋ จ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์ Controller์๊ฒ ๋ค์ ์ ๋ฌํ๋ค.
- Controller๋ ๋ฐ์ ์ ๋ณด๋ฅผ ๋ค์ View์๊ฒ ๋ณด๋ด๊ณ View๋ ์ฌ์ฉ์์๊ฒ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ์ค๋ค.
2. Spring MVC ๊ตฌ์ฑ์์์ ์์
1๋ฒ
- ์ฌ์ฉ์์๊ฒ ์์ฒญ(Requeest)์ด ๋ค์ด์๋ค.
- ์์ฒญ์ ํน์ URL๊ณผ ํจ๊ป ๋ค์ด์ค๊ฒ ๋๋๋ฐ GET, POST ๋ฑ HTTP ๋ฉ์๋๊ฐ ํจ๊ป ์ ๋ฌ๋๋ค.
2๋ฒ•3๋ฒ
- ์์ฒญ์ด ๋ค์ด์ค๋ฉด Front Controller์ธ DispatcherServlet์ด ์์ฒญ์ ๋ฐ๊ฒ ๋๋ค.
- DispatcherServlet์ ์ ์ ํ๊ฒ ์ฒ๋ฆฌํ Controller๋ฅผ ์ฐพ๊ธฐ ์ํด HandlerMapping์ ์ด์ฉํ๋ค.
- ๊ทธ๋ ๊ฒ HandlerMapping์ ๋ค์ด์จ ์์ฒญ ๊ฒฝ๋ก์ HTTP ๋ฉ์๋์ ๋ฐ๋ผ ์ ์ ํ Controller๋ฅผ ์ ํด ๋ฐํํ๋ค.
4๋ฒ•5๋ฒ
- HadlerMapping์ด ์ฐพ์ Controller๋ ์์ฒญ์ ์ค์ ๋ก ์ฒ๋ฆฌํ๋ ์ญํ ์ ํ๋ค.
- Controller๋ ๋น์ฆ๋์ค ๋ก์ง(์์๋ก ํ์๊ฐ์ ์ ์ฒ๋ฆฌํ๊ฑฐ๋ ์ผํ๋ชฐ์์ ๊ฒฐ์ ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฒ)์ ์คํํ๊ณ ๊ทธ์ ํ์ํ ๋ฐ์ดํฐ ์์ฑ ํน์ DB์์ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์จ๋ค.
- ์ฝ๊ฒ ๋งํด View๋ก ์ ๋ฌํ ๋ฐ์ดํฐ๋ฅผ ์ค๋นํ๋ ๊ฒ์ด๊ณ , Model And View๊ฐ ๊ฒฐ๊ณผ์ ๋ด๊ฒจ DispatcherServlet์ ๋ฐํํ๋ค.
6๋ฒ•7๋ฒ
- ๋ฐํ๋ ์ ๋ณด๋ฅผ ๊ธฐ์ค์ผ๋ก ํด๋ผ์ด์ธํธ์๊ฒ ์ ์ ํ๊ฒ ๋ณด์ฌ์ค View๋ฅผ ๊ณ ๋ฅผ ๊ฒ์ด๋ค.
- View Resolver๋ Controller๊ฐ ๋ฐํํ View ์ด๋ฆ์ ๊ธฐ๋ฐ์ผ๋ก ์ค์ View ํ์ผ์ ์ ๋ฌํ๋ค.
8๋ฒ
- View์์ View Rendering์ด ์ผ์ด๋๋ค.
- View Rendering์ ํ๋ ์ ํ ์ด์ ๋ก์ง์ ํฌํจํ๊ณ ์๋ค.
- ํ๋ ์ ํ ์ด์ ๋ก์ง์ ํตํด ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์นํ์ด์ง๋ฅผ ์์ฑํ๊ณ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ค๋ค.
10๋ฒ
- View์์ Rendering๋ ๊ฒฐ๊ณผ๋ DispatcherServlet์ ๋ฐํ๋๋ค.
- ์ฌ์ฉ์๋ ์์ ์ด ์์ฒญํ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ๊ฒ๋๋ค.
3. Spring MVC ๋ฅผ ์ฌ์ฉํ๋ ์ด์
(1) DispathcerServlet
- ๊ธฐ๋ณธ์ ์ผ๋ก ๋ค๋ฅธ MVC๋ DispatcherServlet๊ฐ ์๋ค.
- ๊ทธ๋ ๊ธฐ์ Controller๊ฐ ์์ฒญ์ ๋ฐ๊ณ , ์ง์ ์ฒ๋ฆฌ๋ ํ๋ค.
- DispatcherServlet์ด ์๊ธฐ์ ์์ฒญ ์ฒ๋ฆฌ๋ฅผ ๋ ๊ฐ๊ฒฐํ๊ฒ ์ฒ๋ฆฌํ ์ ์๋๋ก ํด์ค๋ค.
(2) @๋ก ์์ํ๋ ์ด๋ ธํ ์ด์ ์ ์ ๋ฌด
- ์ด๋ ธํ ์ด์ ์ ์ฌ์ฉ์ผ๋ก ์ธํด ์ค๋ณต์ ์ผ๋ก ์ฌ์ฉ๋๋ ์ฝ๋๋ฅผ(ํน์ ๋น์ทํ ์ฝ๋) ์ค์ผ ์ ์๋ค.
- ๊ทธ๋ก์ธํด ๊ฐ๋ ์ฑ์ด ํฅ์๋๋ค.
(3) Ioc(์ ์ด์ ์ญ์ )์ DI(์์กด์ฑ์ฃผ์ )
- ๊ฐ์ฒด๊ฐ์ ์์กด์ฑ์ ํ๋ ์์ํฌ๊ฐ ์๋์ผ๋ก ์ฃผ์ ํ๊ณ ๊ด๋ฆฌํ๋ค.
4. SpringMVC๋ ์ด๋ค์์ผ๋ก ๊ตฌ์ฑ์ ํด์ผํ๋๊ฐ?
์ผํ๋ชฐ์์ ์ฃผ๋ฌธ์ ์ฒ๋ฆฌํ๋ ๊ฒ์ ๊ฐ๋ตํ๊ฒ ์๋ก ๋ค์ด๋ณด์.
(1) Controller
์ฃผ๋ฌธ์ด ๋ค์ด์์ ๋ ์ฃผ๋ฌธ ์์ฒญ์ ์ฒ๋ฆฌํ Controller๋ฅผ ๋ง๋ค์ด์ผํ๋ค.
@RestController ํน์ Controller
@RequestMapping("/์์ฒญ์ด ๋ค์ด์จ ๊ฒฝ๋ก")
public class OrderController {
์ฃผ๋ฌธ ์์ฒญ์ ์ง์ ์ฒ๋ฆฌํ์ง ์๊ณ , ํด๋นํ๋ ์๋น์ค ๊ณ์ธต์ผ๋ก ๋๊ธด๋ค.
์ฃผ๋ฌธ ์ฒ๋ฆฌ ์ฑ๊ณต์ ์ด๋ป๊ฒ ๋ฐํํ ์ง
์ํ ์ฝ๋์ ๋ฐ์ดํฐ๋ฅผ ํจ๊ป ๋ณด๋ด๋ ๋ฑ...
}
(2) Service
์ฃผ๋ฌธ ์์ฒญ์ ๋ฐ์ ์ฃผ๋ฌธ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๋น์ฆ๋์ค ๋ก์ง์ ๋ง๋ค์ด์ผํ๋ค.
@Service
public class OrderServiceImpl implements OrderService {
์ฃผ๋ฌธ๋ด์ญ์ ์ง์ ์ฒ๋ฆฌ
์์๋ก, ์ฃผ๋ฌธ์ด ๋ค์ด์จ ์ํ์ด ์กด์ฌํ๋์ง ํ์ธํ๊ฑฐ๋
์์ฑ๋ ์ฃผ๋ฌธ์ ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ์ ์ฅํ๊ฑฐ๋ ๋ฑ...
๊ฒฐ๊ณผ๋ฅผ ๋๊ตฌ์๊ฒ ๋ฐํํ ์ง๊น์ง ์ ํ๋ ๊ณณ
}
(3) Repository
์ฃผ๋ฌธ ๋ด์ญ์ ์ ์ฅํ ์ ์ฅ์
public interface OrderRepository <Order, Long> {
Order๊ณผ ์ฐ๊ฒฐ๋ ์ ์ฅ์๋ก ์์
์ํ
}
(4) Entity
์ฃผ๋ฌธ ๋ฐ์ดํฐ ๋ชจ๋ธ๋ก ์ฃผ๋ฌธ์ด ๋ค์ด์ค๋ฉด ๊ฐ์ฒด๋ฅผ ์ด๊ธฐํ
@Entity
public class Order {
์ฃผ๋ฌธ ๊ณ ์ ์ ID๋ฅผ ๋ง๋ค๊ฑฐ๋
์ฌ๋ฌ๊ฐ์ ์ฃผ๋ฌธ์ ํ๋์ ์ํ์ผ๋ก ์ฐ๊ฒฐ๋๋๋ก ํ๊ฑฐ๋
์์ฑ์๋ฅผ ์ด์ฉํ์ฌ ์ฃผ๋ฌธ์ ์ด๊ธฐํํด์ฃผ๋ ๊ฒ ๋ฑ...
}
(5) DTO
์์ฒญ๊ณผ ์๋ต๋ง ์ฐ๊ฒฐํ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ง ๋ด๋น, ๋ฐ์ดํฐ ์ ๋ฌ ๊ฐ์ฒด
public class OrderRequest {
์ฃผ๋ฌธ์ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋ ๊ฐ์ฒด
์ํ ID, ์๋...
}
public class OrderResponse {
์ฃผ๋ฌธ ์๋ฃํ ๋ฐ์ดํฐ ๋ฐํ ๊ฐ์ฒด
์ฃผ๋ฌธ ID, ์ด ๊ฐ๊ฒฉ...
}
์ฌ์ค ์คํ๋ง์ ํจํด์๋ MVC๋ง ์๋ ๊ฒ์ ์๋๋ค. ๋ ๋ค์ํ ๋์์ธ ํจํด์ด ์กด์ฌํ์ง๋ง, ๋ชจ๋ธ - ๋ทฐ - ์ปจํธ๋กค๋ฌ๋ก ์ฉ๋๋ฅผ ๋๋๊ณ ์๋ก์ ์ญํ ์ ์นจ๋ฒํ์ง ์๋ ๊ฒ์ด ํฐ ์ฅ์ ์ด ๋์ด MVC๋ฅผ ๋ง์ด ์ฌ์ฉํ๋ ๊ฒ ๊ฐ๋ค.
๊ณต๋ถํ๋ฉด์ ์ดํด๊ฐ ์๋๋ ๋ด์ฉ์ด ๋ง์๋ค.
์ดํดํ ๋ด์ฉ๊น์ง๋ง ๋ธ๋ก๊ทธ์ ์ ์ด๋ณด์๋ค.
์๋ ์ ์ด๋ ์ถ์ฒ์ ๋ค์ด๊ฐ ํ ๋ฒ์ฉ ์ฝ์ด๋ณธ๋ค๋ฉด ๋ ์ข์ ๊ฒ ๊ฐ๋ค.
์ฐ๋ฆฌ๋ ์ ์คํ๋ง์ ์ฌ์ฉํ๋๊ฐ? - Java spring์ ํน์ง
์์ ๊ธ์์ ์ ์ฐ๋ฆฌ๊ฐ ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ์ง ์์๋ณด์๋ค. ์งง๊ฒ ์ง๊ณ ๋์ด๊ฐ์๋ณด์. ๊ฒฐ๊ตญ ๊ฐ๋ฐ์ ์ ์ฅ์์๋ ๊ฒ์ฆ๋ ์ฝ๋๋ฅผ ์ด์ฉํด์ ์ต์ํ์ ๋ถ๋ถ๋ง ๋ฐ๊พธ์ด ๋น ๋ฅด๊ฒ ๊ฐ๋ฐํ๊ธฐ ์ํด์
joychae.tistory.com
A Comprehensive Guide To Spring MVC | SevenMentor Training
Explore A Comprehensive Guide to Spring MVC, covering key concepts, architecture, and components for building robust, scalable Java web applications.
www.sevenmentor.com
Spring vs Spring MVC vs Spring Boot: A Detailed Comparison for Java Developers
In the ever-evolving landscape of Java development, the Spring Framework has emerged as a powerhouse,...
dev.to
[Spring] Web MVC ํจํด์ ํ๋ฆ๊ณผ Controller, View, Model ๊ตฌํ๋ฒ
์คํ๋ง MVC ํจํด์ ํ๋ฆ, ํน์ง, ๊ตฌ์ฑ์์, ์คํ ์์. Controller, View, Model ๊ตฌํ๋ฒ
velog.io
[Spring MVC] ์คํ๋ง MVC๋ ๋ฌด์์ธ๊ฐ? - ์คํ๋ง MVC ๊ตฌ์กฐ ์ดํด
๋ณธ ๋ด์ฉ์ ์จ๋ผ์ธ ๊ฐ์ ์ฌ์ดํธ ์ธํ๋ฐ์ ๊น์ํ ๋์ ๊ฐ์ ๋ด์ฉ์ด ํฌํจ๋์ด ์์ต๋๋ค. '์คํ๋ง MVC 1ํธ - ๋ฐฑ์๋ ์น ๊ฐ๋ฐ ํต์ฌ ๊ธฐ์ ' ์คํ๋ง MVC 1ํธ - ๋ฐฑ์๋ ์น ๊ฐ๋ฐ ํต์ฌ ๊ธฐ์ - ์ธํ๋ฐ | ๊ฐ์ ์น
ittrue.tistory.com
[JAVA] Web์์์ ๋งตํ(Mapping)์ด๋??
์ค๋์ Mapping์ ๋ํด์ ๊ฐ๋จํ ์์๋ณด๊ฒ ๋ค. ๋งตํ์ด๋? ํด๋น ๊ฐ์ด ๋ค๋ฅธ ๊ฐ์ ๊ฐ๋ฅดํค๋๋ก ํ๋ ๊ฒ์ด๋ค. Ex) http~/action.do ๋ผ๋ ํ์ด์ง๋ฅผ ๋ง๋ค์๋ค๊ณ ๊ฐ์ ํ ๋ ์ด url์ด ๊ทธ๋๋ก ์ ์ถ๋๋ฉด ๋ณด์์ ์ทจ์ฝํ
wjdvnadldzm.tistory.com
'๐ท Spring > ๊ฐ๋ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Spring - GET๊ณผ POST ๊ทธ๋ฆฌ๊ณ @GetMapping (5) | 2024.10.22 |
---|---|
Spring - @Controller์ @RestController ๊ทธ๋ฆฌ๊ณ ์ํ์ฝ๋ (4) | 2024.10.18 |