1 분 소요

인프런 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술편을 학습하고 정리한 내용 입니다.

@RequestMapping을 잘 보면 클래스 단위가 아니라 메서드 단위에 적용된 것을 볼 수 있다. 따라서 컨트롤러 클래스를 유연하게 하나로 통합할 수 있다.

hello.servlet.web.springmvc.v2.SpringMemberControllerV2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
@Controller  
@RequestMapping("/springmvc/v2/members")  
public class SpringMemberControllerV2 {  
    private final MemberRepository memberRepository = MemberRepository.getInstance();  
  
    @RequestMapping("/new-form")  
    public ModelAndView newForm() {  
        return new ModelAndView("new-form");  
    }  
  
    @RequestMapping("/save")  
    public ModelAndView save(HttpServletRequest request, HttpServletResponse response) {  
        String username = request.getParameter("username");  
        int age = Integer.parseInt(request.getParameter("age"));  
  
        Member member = new Member(username, age);  
        memberRepository.save(member);  
  
        ModelAndView mv = new ModelAndView("save-result");  
        mv.addObject("member", member);  
        return mv;  
    }  
  
    @RequestMapping  
    public ModelAndView members(HttpServletRequest request, HttpServletResponse response) {  
        List<Member> members = memberRepository.findAll();  
  
        ModelAndView mv = new ModelAndView("members");  
        mv.addObject("members", members);  
        return mv;  
    }  
}

조합 컨트롤러 클래스는 통합하는 것을 넘어서 조합도 가능하다. 이전에 코드는 /springmvc/v2/members가 다 중복 되었었다.

물론 이렇게 사용해도 되지만, 컨트롤러를 통합한 에제를 보면 중복을 어떻게 제거했는지 확인할 수 있다. 클래스 레벨에 다음과 같이 @RequestMapping을 두면 메서드 레벨과 조합이 된다.

1
2
3
@Controller  
@RequestMapping("/springmvc/v2/members")  
public class SpringMemberControllerV2 {}

조합 결과

  • 클래스 레벨 @RequestMapping("/springmvc/v2/members")
    • 메서드 레벨 @RequestMapping("/new-form")/springmvc/v2/members/new-form
    • 메서드 레벨 @RequestMapping("/save")/springmvc/v2/members/save
    • 메서드 레벨 @RequestMapping/springmvc/v2/members/

태그:

카테고리:

업데이트:

댓글남기기