Controller Method Signiture에 올 수 있는 것들
- HttpServletRequest, HttpServletResponse, HttpSession, WebRequest
- Locale
- InputStream, OutputStream, Reader, Writer
- @PathVariable, @RequestParam, @RequetHeader, @CookieValue, @Value
- Map, Model, ModelMap, @ModelAttribute, @RequestBody
- Errors, BindingResult, ...
이러한 것들은 Spring에서 ArgumentResolver가 각각의 파라미터들을 처리할 수 있도록 HandlerMethodArgumentResolver를 상속해 자동으로 추가한다.
Controller Method Return Type에 올 수 있는 것들
- ModelAndView, View
- Map, Model, ModelMap
- String
- void
- @ResponseBody
- POJO
이러한 Return Type들은 Spring에서 MessageConverter나 각각의 리턴타입들을 처리할 수 있도록 자동으로 추가된다. 예를 들면 StringHttpMessageConverter는 응답본문에 스트링값 반환하여 응답하고, MappingJackson2httpMessageConverter은 Json의 Serialize, Deserialize을 처리할 수 있게한다.
예시 코드
@PathVariable
@GetMapping("/persons/{personId}")
public List<Person> getPersons(@PathVariable(name="personId", required=true) Long personId) {
// ...
}
@RequestHeader
@GetMapping("/some-request")
public List<User> getUsers(@RequestHeader(name = "User-Id") Long userId) {
// ...
}
@CookieValue
@GetMapping("/some-request")
public List<Person> getPersons(@CookieValue(name = "SESSION") String sessionId) {
// ...
}
@ModelAttribute
@ModelAttribute("user")
public User getUser(@PathVariable("userId") String userId){
return userRepository.getUser(userId);
}
@GetMapping("/user/{userId}/modify")
public String userModifyForm(@ModelAttribute User user, Model model) {
if (Objects.isNull(user)) {
model.addAttribute("exception", new UserNotFoundException());
return "error";
}
model.addAttribute("user", user);
return "userModify";
}
@ModelAndView
@GetMapping("/some-request")
public ModelAndView doSomething() {
ModelAndView mav = new ModelAndView("viewName");
mav.addObject("name", "value");
// ...
return mav;
}
'Spring > Spring Boot MVC' 카테고리의 다른 글
Spring MVC Components(구성 요소) (0) | 2024.08.18 |
---|---|
입력값 검증(Validation) (0) | 2024.08.11 |
Spring MVC에서의 Exception Handling, Exception 종류 (0) | 2024.08.04 |
Spring Web Mvc 자동설정 코드 따라가기 (0) | 2024.08.03 |
Spring Boot MVC 소개 (0) | 2024.07.30 |