@Component
public @interface Controller {
@AliasFor(annotation = Component.class)
String value() default "";
}
@Controller
애노테이션을 작성하여 사용한다.@Component
를 상속받아, Spring Bean으로 등록된다.src/main/resource/static
경로에서 해당 문자열과 같은 이름의 파일을 찾아 ModelAndView를 생성한다.@Controller
@ResponseBody
public @interface RestController {
@AliasFor(annotation = Controller.class)
String value() default "";
}
@RestController
애노테이션을 작성하여 사용한다.Controller
와 ResponseBody
를 상속받으며,@Controller
public class SpringMemberFormControllerV1 {
@RequestMapping("/springmvc/v1/members/new-form")
public ModelAndView process() {
return new ModelAndView("new-form");
}
}
@Controller
public class SpringMemberSaveControllerV1 {
private MemberRepository memberRepository = MemberRepository.getInstance();
@RequestMapping("/springmvc/v1/members/save")
public ModelAndView process(
HttpServletRequest req,
HttpServletResponse resp
) {
String username = req.getParameter("username");
int age = Integer.parseInt(req.getParameter("age"));
Member member = new Member(username, age);
memberRepository.save(member);
ModelAndView mv = new ModelAndView("save-result");
mv.addObject("member", member);
return mv;
}
}
@Controller
public class SpringMemberListControllerV1 {
private MemberRepository memberRepository = MemberRepository.getInstance();
@RequestMapping("/springmvc/v1/members")
public ModelAndView process() {
List<Member> members = memberRepository.findAll();
ModelAndView mv = new ModelAndView("members");
mv.addObject("members", members);
return mv;
}
}
@RequestMapping(value = "/hello-basic")
@RequestMapping({"/hello-basic", "/hello-go"})
RequestMethod.GET
을 입력해서 GET 요청만 받도록 제한할 수 있다.@GetMapping
, @PostMapping
, @PutMapping
, @DeleteMapping
파라미터의 조건을 설정할 수 있다.
params="mode" | mode 파라미터를 포함해야 한다. |
params="!mode" | mode 파라미터가 없어야 한다. |
params="mode=debug" | ?mode=debug 를 포함해야 한다. |
params="mode!=debug" | mode 파라미터는 있어도 되지만, 값이 debug면 안된다. |
params={"mode=debug","data=good"} | 배열 형태로 입력해서 여러 조건을 설정할 수 있다. |
application/json
, text/plain
, 등text/html
, 등