출처 https://www.baeldung.com/spring-mvc-annotations
간단히 말해, @RequestMapping은 @Controller 클래스 내의 요청 처리기 메서드를 표시합니다.
클래스 수준에서 이 주석을 적용하면 @Controller 클래스의 모든 처리기 메서드에 대한 기본 설정을 제공할 수 있습니다. 유일한 예외는 Spring이 메서드 수준 설정으로 재정의하지 않고 두 경로 부분을 추가하는 URL입니다.
``
@Controller
@RequestMapping(value = "/vehicles", method = RequestMethod.GET)
class VehicleController {
@RequestMapping("/home")
String home() {
return "home";
}
}
``
@PostMapping("/save") void saveVehicle(@RequestBody Vehicle vehicle){ }
이 주석은 메서드 인수가 URI 템플릿 변수에 바인딩되었음을 나타냅니다. @RequestMapping 주석을 사용하여 URI 템플릿을 지정하고 @PathVariable을 사용하여 템플릿 부분 중 하나에 메서드 인수를 바인딩할 수 있습니다.
@RequestMapping("/{id}") Vehicle getVehicle(@PathVariable("id") long id) { // ... }
method argument의 이름과 part 이름이 같다면 part의 name을 명시하지 않아도 됩니다.
@RequestMapping("/{id}") Vehicle getVehicle(@PathVariable long id) { // ... }
required = false 를 추가하여 URI에 경로 변수를 선택적으로 표시할 수 있습니다.
@RequestMapping("/{id}") Vehicle getVehicle(@PathVariable(required = false) long id) { // ... }
HTTP request parameters에 접근하기 위해 사용합니다. parameter 값이 없으면 default값 가지도록 설정 가능합니다.
@RequestMapping Vehicle getVehicleByParam(@RequestParam(defaultValue = "5") long id) { // ... }
@CookieValue, @RequestHeader 는 각각 cookie와 header에 접근할 수 있는데,
@RequestParam과 같은 방법으로 설정합니다.
메서드 반환 결과를 응답으로 보냅니다. 화면이 아닌 값을 보냅니다.
요청 처리 메서드에서 Exception 발생시 해당 @이 붙은 메서드를 실행하며, 인자로 발생한 Exception을 전달합니다.
상태 코드를 응답으로 전달하며, @ExceptionHandler와 같이 쓰입니다.
@Controller + @ResponseBody 모든 요청 처리 메서드의 반환 값을 응답으로 사용합니다.
클래스 수준에 적용시 반환 값을 Model에 추가, parameter에 적용시 이미 저장된 Model을 가져와 parameter에 전달합니다.
클래스 수준 적용시 model.addAttribute("key name", "value")를 통해서도 가능합니다.