프론트 컨트롤러 계속
애노테이션으로 호출될 메서드 지정하기
/app/* ---> <> Dispatcher Servlet 에서 @RequestMapping 을 통해서 메서드를 호출할 거임 <- 사용하면 인터페이스 구현할 필요없음
애노테이션 정의에 @Retention(RetentionPolicy.SOURCE) 이 있음 언제까지 유지할 건지 정책
----애노테이션 유지정책----
SOURCE : 컴파일 할 때 .class 파일에 포함되지 않는다. 소스파일에서만 유지된다. 컴파일 된.class 파일에는 남아있지 않음/ 응용 예) lombok
임시 생성할때 getter/ setter/toString/hashCode/생성자 추가 이걸 컴파일 해서 .class 만듦
CLASS : .class 파일에 포함됨 단 실행 중에는 추출될 수 없다.
.class 파일에 애노테이션 정보 유지한다.
RUNTIME : .class 파일에 포함된다. 실행 중에 추출가능(Reflection API 를 이용해 알아낼 수 있다.)
@Target(value = {ElementType.METHOD, ElementType.TYPE}) <= 메서드에 붙일 수 있고, 클래스에도 붙일 수 있다. 계속해서 써주면 됨
=> 하나만 있으면 이렇게 쓰기 가능 @Target(ElementType.METHOD)
인터페이스를 사용하는 것이 종속성을 없애줌
String defalutValue(); // 해당 이름의 요청 파라미터 값이 없을 떄 사용할 기본 값 설정하는 프로퍼티
// 해당 이름의 파라미터 값이 없으면 @RequsetParam의 defalutValue 프로퍼티 값을 대신 사용한다.
if (value == null) {
value = anno.defalutValue();
}