Spring WebMVC 모듈의 주요 Annotation
https://docs.spring.io/spring-framework/reference/web/webmvc.html#page-title
1. 요청 매핑 관련 어노테이션
@RequestMapping, @GetMapping, @PostMapping, @PutMapping, @DeleteMapping
특정 url패턴에 매핑되는 클래스 및 메서드를 지정하는 주석.
요청 매핑관련된 어노테이션은 Handlermapping에 등록된다.
Handlermapping은 map형태의 데이터로 요청 URL패턴과HTTP 전송방식(GET/POST)를 KEY값으로 관리하며, 실제 구현할 메서드를 value값으로 관리한다.
@RequestMapping("/member") // /member로 들어온 요청은 현재 컨트롤러가 처리함을 의미
public class MemberController {
@RequestMapping("/login") // /member/login으로 들어온 요청은 현재 메서드가 처리함을 의미.
public String login(...){
...
}
@RequestMapping("/logout") // /member/logout으로 들어온 요청은 현재 메서드가 처리함을 의미.
public String logout(...){
...
}
//모든 메서드 mappingUrl의 앞에 /member가 붙게되므로 class영역에 선언한 @RequestMapping
//주석은 "공통주소"라고 불린다.
}3. 요청 파라미터 및 객체 바인딩 어노테이션
아래 사용하는 어노테이션들은 기본적으로 ArgumentResolver가 HTTP요청 데이터를 추출하여 값을 바인딩해준다.
1. @RequestParam
클라이언트가 요청시 전달한 파라미터값을 바인딩해주는 어노테이션.
요청 파라미터의 key값과 일치하는 변수 지정시 파라미터값을 가져올 수 있다. 속성을 통해 기본값 설정, 필수값 설정등이 가능하다.
2. @ModelAttribute
파라미터로 전송한 값을 특정 model객체로 자동 바인딩 해주는 어노테이션
명시적으로 추가하든 생략하든 데이터 바인딩은 문제없으나 명시적으로 작성했을때는 추가적인 기능을 이용할 수 있다.
DispatcherServlet -> HandlerAdapter -> ArgumentResolver의 흐름으로 처리된다.
3. @SeesionAttributes
@ModelAttribute 나 Model에 넣은 데이터를 자동으로 http session에 바인딩해주는 어노테이션
4. @PathVariable
URL경로에 포함된 값을 변수로 추출하는 어노테이션
restful 방식의 개발시 사용된다.
5. @RequestBody
요청 본문에 단긴 JSON데이터를 자바 객체로 변환해 바인딩하는 어노테이션
3. 예외처리 관련 어노테이션
1. @ ExceptionHandler
컨트롤러에서 발생한 예외를 잡아 처리하는 메서드에 붙이는 어노테이션
특정 예외 타입을 지정해 해당 예외가 발생했을 때 이 메서드가 호출되도록 설정한다.
2. @ ControllerAdvice
모든 컨트롤러에 “Advice(보조 기능)”를 적용할 수 있게 해주는 어노테이션
프로젝트 전역에서 공통 예외 처리, 바인딩 설정, 모델 객체 주입 등을 담당하는 클래스에 붙이는 어노테이션
@ExceptionHandler , @ModelAttribute , @ InitBinder와 함께 사용된다.
3. @ InitBinder
컨트롤러에서 웹 데이터 바인딩(요청 파라미터 → 객체) 동작을 커스터마이징하는 메서드에 붙이는 어노테이션
폼 데이터 변환 및 유효성 검사 등에 사용된다.
InitBinder를 활용한 설정은 어노테이션을 선언한 해당 컨트롤러에만 적용된다.
4. 응답처리 관련 어노테이션
@ResponseBody
응답 데이터를 JSON(혹은 값 그자체)로 직렬화해서 클라이언트에 그대로 반환하는 어노테이션
Jackson-databaind라이브러리를 추가하면, ResponseBody로 반환하는 객체 값을 자동으로 JSON으로 변환한다.
5. 기타
@CrossOrigin
CORS(Cross-Origin Resource Sharing)를 처리하기 위한 어노테이션
CORS?
브라우저의 보안정책으로 현재 도메인에서 다른 도메인으로 자원을 요청할수 없게 만드는 정책
만약 클라이언트의 도메인이 http:localhost:3000에서 http:loacalhost:8080으로데이터 요청을 보내면 이 요청은 CORS정책 위배에 의해 차단된다.
Last updated