-
요청 맵핑하기 6부 커스텀 애노테이션SPRING/스프링 MVC 2021. 6. 27. 13:02
@RequestMapping 애노테이션을 메타 애노테이션으로 사용하기
- @GetMapping 같은 커스텀한 애노테이션을 만들 수 있다.
메타(Meta) 애노테이션
- 애노테이션에 사용할 수 있는 애노테이션
- 스프링이 제공하는 대부분의 애노테이션은 메타 애노테이션으로 사용할 수 있다.
조합(Composed) 애노테이션
- 한개 혹은 여러 메타 애노테이션을 조합해서 만든 애노테이션
- 코드를 간결하게 줄일 수 있다.
- 보다 구체적인 의미를 부여할 수 있다.
@GetMapping 예시
// 메타 애노테이션 : 애노테이션 위에 사용하는 애노테이션 // @Target, @Retention, @Documented, @RequestMapping // 조합 애노테이션 : 한개 혹은 여러 메타 애노테이션을 조합해서 만든 애노테이션 @Target({ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Documented @RequestMapping( method = {RequestMethod.GET} ) public @interface GetMapping
@Retention
- 해당 애노테이션 정보를 언제까지 유지할 것인가.
- Source: 소스 코드까지만 유지. 즉, 컴파일 하면 해당 애노테이션 정보는 사라진다는 이야기.
- Class: 컴파인 한 .class 파일에도 유지. 즉 런타임 시, 클래스를 메모리로 읽어오면 해당 정보는 사라진다.
- Runtime: 클래스를 메모리에 읽어왔을 때까지 유지! 코드에서 이 정보를 바탕으로 특정 로직을 실행할 수 있다.
@Target
- 해당 애노테이션을 어디에 사용할 수 있는지 결정한다.
@Documented
- 해당 애노테이션을 사용한 코드의 문서에 그 애노테이션에 대한 정보를 표기할지 결정한다.
예제
@Controller public class SampleController4 { @GetHelloMapping @ResponseBody public String hello5() { return "hello"; } }
// @Target(ElementType.METHOD) : 해당 애노테이션을 메서드 단에서 사용할 수 있도록 설정한다. // @Retention(RetentionPolicy.RUNTIME) : RunTime 시점까지 해당 어노테이션 정보를 유지 @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) @RequestMapping(method = RequestMethod.GET, value = "/hello5") public @interface GetHelloMapping { }
'SPRING > 스프링 MVC' 카테고리의 다른 글
핸들러 메소드 2부: URI 패턴 (0) 2021.06.27 HTTP 요청 맵핑하기 7부: 맵핑 연습 문제 (0) 2021.06.27 HTTP 요청 맵핑하기 4부: 헤더와 매개변수 (0) 2021.06.26 HTTP 요청 맵핑하기 3부: 미디어 타입 맵핑 (0) 2021.06.26 HTTP 요청 맵핑하기 2부: URI 패턴 맵핑 (0) 2021.06.20