MVC 활용(7) : HTTP 요청 맵핑하기 6부 - 커스텀 애노테이션
7. HTTP 요청 맵핑하기 6부 - 커스텀 애노테이션
@RequestMapping 애노테이션을 메타 애노테이션으로 사용하기
- @GetMapping 같은 커스텀한 애노테이션을 만들 수 있다.
메타(Meta) 애노테이션
- 애노테이션에 사용할 수 있는 애노테이션
- 스프링이 제공하는 대부분의 애노테이션은 메타 애노테이션으로 사용할 수 있다.
조합(Composed) 애노테이션
- 한개 혹은 여러 메타 애노테이션을 조합해서 만든 애노테이션
- 코드를 간결하게 줄일 수 있다.
- 보다 구체적인 의미를 부여할 수 있다.
@Documented
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME) // 기본값은 class, 클래스를 로딩하는 순간 사라짐
@RequestMapping(method = RequestMethod.GET, value = "/hello")
public @interface GetHelloMapping {
}
@Controller
public class SampleController {
@GetHelloMapping
@ResponseBody
public String hello(){
return "hello";
}
}
@RunWith(SpringRunner.class)
@WebMvcTest
public class SampleControllerTest {
@Autowired
MockMvc mockMvc;
@Test
public void helloTest() throws Exception{
mockMvc.perform(options("/hello"))
.andDo(print())
.andExpect(status().isOk());
}
}
@Retention
- 해당 애노테이션 정보를 언제까지 유지할 것인가.
- Source: 소스 코드까지만 유지. 즉, 컴파일 하면 해당 애노테이션 정보는 사라진다는 이야기.
- Class: 컴파인 한 .class 파일에도 유지. 즉 런타임 시, 클래스를 메모리로 읽어오면 해당 정보는 사라진다.
- Runtime: 클래스를 메모리에 읽어왔을 때까지 유지! 코드에서 이 정보를 바탕으로 특정 로직을 실행할 수 있다.
@Target
- 해당 애노테이션을 어디에 사용할 수 있는지 결정한다.
@Documented
- 해당 애노테이션을 사용한 코드의 문서에 그 애노테이션에 대한 정보를 표기할지 결정한다.
참고
- 인프런 : 스프링 웹 MVC(백기선)
- https://docs.spring.io/spring/docs/current/spring-framework-reference/core.html#beansmeta-annotations
- https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/AliasFor.html
Author And Source
이 문제에 관하여(MVC 활용(7) : HTTP 요청 맵핑하기 6부 - 커스텀 애노테이션), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jsj3282/스프링-MVC-활용7-HTTP-요청-맵핑하기-6부-커스텀-애노테이션저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)