annotation 유지정책

아기코딩단2·2022년 4월 20일
0

프론트 컨트롤러 계속

애노테이션으로 호출될 메서드 지정하기
/app/* ---> <> Dispatcher Servlet 에서 @RequestMapping 을 통해서 메서드를 호출할 거임 <- 사용하면 인터페이스 구현할 필요없음

애노테이션 정의에 @Retention(RetentionPolicy.SOURCE) 이 있음 언제까지 유지할 건지 정책

----애노테이션 유지정책----

  1. SOURCE : 컴파일 할 때 .class 파일에 포함되지 않는다. 소스파일에서만 유지된다. 컴파일 된.class 파일에는 남아있지 않음/ 응용 예) lombok
    임시 생성할때 getter/ setter/toString/hashCode/생성자 추가 이걸 컴파일 해서 .class 만듦

  2. CLASS : .class 파일에 포함됨 단 실행 중에는 추출될 수 없다.
    .class 파일에 애노테이션 정보 유지한다.

  3. RUNTIME : .class 파일에 포함된다. 실행 중에 추출가능(Reflection API 를 이용해 알아낼 수 있다.)

@Target(value = {ElementType.METHOD, ElementType.TYPE}) <= 메서드에 붙일 수 있고, 클래스에도 붙일 수 있다. 계속해서 써주면 됨
=> 하나만 있으면 이렇게 쓰기 가능 @Target(ElementType.METHOD)

인터페이스를 사용하는 것이 종속성을 없애줌

String defalutValue(); // 해당 이름의 요청 파라미터 값이 없을 떄 사용할 기본 값 설정하는 프로퍼티

// 해당 이름의 파라미터 값이 없으면 @RequsetParam의 defalutValue 프로퍼티 값을 대신 사용한다.

if (value == null) {
	value = anno.defalutValue();
}
profile
레거시 학살자

0개의 댓글