스프링 MVC - 컨트롤러 통합

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

  • 조합 @RequestMapping은 조합이 가능하다! /springmvc/v2/members 라는 부분에 중복이 있기 때문에 중복된 @RequestMapping("/springmvc/v2/members")를 클래스위에 붙이면 각 메서드들은 그 뒤 url만 @RequestMapping에 넣어주만 된다!

단, 더할 urldl 없더라도 @RequestMapping은 꼭 넣어주어야한다! 넣어주지 않으면 url이 들어와도 이에 해당하는 메서드(뷰와 컨트롤러)가 실행되지 않기 때문이다! 아래코드처럼 메서드의 @RequestMapping에 추가적인 url이 없으면 상위에 공통된 @RequestMapping("/springmvc/v2/members")으로 들어오는 url에 대해 메서드가 실행된다!

@RequestMapping
    public ModelAndView members() {
        List<Member> members = memberRepository.findAll();
        ModelAndView mv = new ModelAndView("members");
        mv.addObject("members",members);
        return mv;
    }

처음에 에러가 난 이유

클래스 위에 @RequestMapping("/springmvc/v2/members")으로 공통된 url을 뽑아주었는데 아래에서 /members로 한번 더 들어가버리니까 localhost:8080/springmvc/v2/members 이 아니라 localhost:8080/springmvc/v2/members/members 로 한번 더 들어가야 회원리스트가 나온다!

@RequestMapping("/members")
    public ModelAndView members() {
        List<Member> members = memberRepository.findAll();
        ModelAndView mv = new ModelAndView("members");
        mv.addObject("members",members);
        return mv;
    }

Last updated