Java Annotation 만들기
Annotation 을 생성한다.
Annotation은 Interface형식이다
내부에는 어노테이션에서 받을 속성값을 적을 수 있는데
기존 클래스 형식으로 적지 않는다.
String value() default "http://www.naver.com";
입력받을 값의 타입 속성명()
default값을 설정할 수도 있다.
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@Documented
@Inherited
public @interface LoginCheck{
@Inherited
클래스 상속 관계에서 어노테이션을 상속받을 수 있는지 여부
이 어노테이션이 적용되면 하위클래스에서 상속된다.
@Documented
JavaDoc 문에서 문서화할 때 Annotation을 포함시킨다.
@Target
어노테이션을 어떤 요소에 적용할 것인지 지정
ex) 메소드로 지정되었으므로 메소드에만 적용가능하다
@Retention
어노테이션을 언제까지 유지할 것인지 지정
SOURCE: 컴파일 시점까지만 유지, 런타임시 정보 사용 불가
->컴파일러를 위한 정보나 코드 생성 도구에 사용
CLASS(default): 컴파일 ~ 런타임까지 유지, 런타임시 리플렉션(reflection)을 통해 어노테이션 정보를 얻을 수 없다.
RUNTIME: 컴파일 ~ 런타임까지 유지, 리플렉션을 통해 어노테이션 정보를 얻을 수 있다.
->런타임 동작에 영향을 주는 메타 데이터를 제공하는데 유용
@LoginCheck
@GetMapping("/user_logout_action")
public String user_logout_action(HttpSession session) {
session.removeAttribute("sUserId");
session.invalidate();
return "redirect:user_main";
}
@LoginCheck을 메소드에 적용하였다.