๐ฏ ๋ชฉํ : Spring MVC์ ์ดํด์ ๋์๋ฐฉ์, ๊ตฌ์ฑ์์ ํ์ต
@GetMapping
์ ํตํด ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ฐ๋๋ค.MemberService
์ .findMember()
๋ฅผ ํธ์ถํด Service๋จ์ ๋น์ฆ๋์ค ๋ก์ง์ ์ฒ๋ฆฌํ๋ค.@RestController
@RequestMapping("/members")
public class MemberController {
private final MemberService memberService;
MemberController(MemberService memberService) {
this.memberService = memberService;
}
@GetMapping("/{member-id}") // (1)
public Member getMember(@PathVariable("member-id") long memberId) {
return memberService.findMember(memberId); // (2)
}
}
์ ๊ทธ๋ฆผ์ผ๋ก Spring MVC๊ฐ ๋ด๋ถ์ ์ผ๋ก ์์ฒญ์ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ๋์ง ํ์ธ ํ ์ ์๋ค.
1. ํด๋ผ์ด์ธํธ์ ์์ฒญ์ DispatcherServlet
์ผ๋ก ์ ๋ฌ๋๋ค.
2. DispatcherServlet
์ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ฒ๋ฆฌํ Controller์ ๋ํ ๊ฒ์์ HandlerMapping
์ธํฐํ์ด์ค์ ์์ฒญํ๋ค.
- HandlerMapping
์ ํด๋ผ์ด์ธํธ ์์ฒญ๊ณผ ๋งคํ๋๋ ํธ๋ค๋ฌ ๊ฐ์ฒด๋ฅผ ๋ค์ DispatcherServlet
์๊ฒ ๋ฐํํด์ค๋ค.
3. ์ค์ ํด๋ผ์ด ์ธํธ ์์ฒญ์ ์ฒ๋ฆฌํ Controller ํด๋์ค์ Handler ๋ฉ์๋๋ฅผ ์ฐพ์ ํธ์ถํ๊ธฐ ์ํด DispatcherServlet
์
Handler ๋ฉ์๋๋ฅผ ์ง์ ํธ์ถ ํ์ง ์๊ณ , HandlerAdapter
์ ํธ์ถ์ ์์ํ๋ค.
4. HandlerAdapter
๋ DispatcherServlet
์ผ๋ก ์ ๋ฌ ๋ฐ์ Controller ์ ๋ณด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก Handler ๋ฉ์๋๋ฅผ ํธ์ถํ๋ค.
- Controller์ Handler ๋ฉ์๋๋ ๋น์ฆ๋์ค ๋ก์ง ์ฒ๋ฆฌํ ๋ฐํ ๋ฐ์ Model ๋ฐ์ดํฐ๋ฅผ HandlerAdapter
์๊ฒ ์ ๋ฌํ๋ค.
5. HandlerAdapter
๋ ์ ๋ฌ๋ฐ์ Model ๋ฐ์ดํฐ์ View ์ ๋ณด๋ฅผ ๋ค์ DispatcherServlet
์๊ฒ ์ ๋ฌํ๋ค.
6. DispatcherServlet
์ ์ ๋ฌ ๋ฐ์ ๋ฐ์ดํฐ์ View ์ ๋ณด๋ฅผ ViewResolver
์๊ฒ ์ ๋ฌํด์ View ๊ฒ์ ์์ฒญํ๋ค.
7. ViewResolver
๋ View ์ ๋ณด๋ฅผ ์ฐพ์์ ๋ค์ ๋ฐํ ํด์ฃผ๋ฉฐ DispatcherServlet
์ View ๊ฐ์ฒด๋ฅผ ํตํด Model ๋ฐ์ดํฐ๋ฅผ ๋๊ฒจ์ฃผ๋ฉด์ ์๋ต ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ๋ค
- View๋ ์๋ต ๋ฐ์ดํฐ๋ฅผ ์์ฑํด DispatcherServlet
์ ์ ๋ฌํ๋ค.
8. ์ค์ ๋ก๋ DispatcherServlet
์ด View๋ก ์ ๋ฌ ๋ฐ์ ์๋ต ๋ฐ์ดํฐ๋ฅผ ํด๋ผ์ด์ธํธ์ ์ ๋ฌํ๊ฒ ๋๋ค.
DispatcherServlet
์ด ์ ํ๋ฆฌ์ผ์ด์
๊ฐ์ฅ ์์ ๋ฐฐ์น๋์ด ๋ค๋ฅธ ๊ตฌ์ฑ ์์๋ค๊ณผ ์ํธ์์ฉํ๋ฉฐ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ํจํด์ ๊ฐ์ง๊ณ ์๋ค.
์ด๋ฅผ Front Controller Pattern ์ด๋ผ๊ณ ํ๋ค.