Java·Spring에서 코드에 meta date를 추가하는 문법
Java에서 기본적으로 제공하는 어노테이션
class SuperClass { // 상위 클래스
public void method1() {}
} // class end
class SubClass extends SuperClass { // 하위 클래스 - 상속
@Override // 재정의 어노테이션
public void method1() {}
@Deprecated // 더 이상 사용하지 않음 = 비권장을 의미
public void method2() {}
} // class end
코드를 정의하거나 동작을 제어할 때 사용하는 어노테이션
실행문 안에 추상 메소드 선언
@Retention( RetentionPolicy.RUNTIME ) : 런타임까지 유지
@Retention( RetentionPolicy.CLASS ) : class 파일에 포함 = 런타임이 아닐때도 유지
@Retention( RetentionPolicy.RESOURCE) : 컴파일 이후 삭제
@Target( ElementType.METHOD ) : 메소드에서 사용
@Target( ElementType.TYPE ) : 클래스, 인터페이스에서 사용
@Target( ElementType.FIELD ) : 멤버변수에서 사용
@Target( ElementType.PARAMETER ) : 매개변수에서 사용
@Target( ElementType.CONSTRUCTOR ) : 생성자에서 사용
// 어노테이션 생성
@Retention(RetentionPolicy.RUNTIME) // Annotation1 어노테이션을 런타임까지 유지
@Target(ElementType.METHOD) // Annotation1 어노테이션을 메소드에 적용
@interface Annotation1{
// 추상메소드
String value1();
}
// 어노테이션 사용
class TestClass1{
@Annotation1( value1 = "어노테이션 주입") //생성한 어노테이션을 아래의 코드 런타임 시 실행· value 주입
public void method3(){
// method3 실행 시 , @Annotation 실행 > Annotation 내의 추상메소드 value1() 도 실행
} // func end
} // class end
public class Example1 {
public static void main(String[] args) {
// [1] 표준 Annotation
SubClass subClass = new SubClass();
subClass.method1(); // @Override : 오버라이딩
subClass.method2(); // @Deprecated : ctrl+space bar(자동완성)에서 취소선으로 표시, 실행은 가능
} // main end
} // class end