Spring_02_Annotation 기초·생성

OngTK·2025년 8월 9일

Spring

목록 보기
2/25

1) 정의

Java·Spring에서 코드에 meta date를 추가하는 문법

2) 목적

  • 메타데이터 제공
  • 코드 간소화
  • 가독성 향상

3) 종류

(1) 표준 어노테이션

Java에서 기본적으로 제공하는 어노테이션

① @Override : 상위클래스의 메소드를 재정의
② @Deprecated : 더이상 사용하지 않는 코드
class SuperClass {  // 상위 클래스
    public void method1() {}
} // class end

class SubClass extends SuperClass { // 하위 클래스 - 상속
    @Override       // 재정의 어노테이션
    public void method1() {}

    @Deprecated     // 더 이상 사용하지 않음 = 비권장을 의미
    public void method2() {}
} // class end

(2) 메타 어노테이션

코드를 정의하거나 동작을 제어할 때 사용하는 어노테이션

① 서블릿(Java web class)
② 스프링

4) 생성방법

(1) @interface 어노테이션명{}

실행문 안에 추상 메소드 선언

(2) @interface 위에 다양한 @·어노테이션을 설정

① @Retention() : 어노테이션 생성주기(유지기간)을 설정

@Retention( RetentionPolicy.RUNTIME ) : 런타임까지 유지
@Retention( RetentionPolicy.CLASS ) : class 파일에 포함 = 런타임이 아닐때도 유지
@Retention( RetentionPolicy.RESOURCE) : 컴파일 이후 삭제

② @Target() : 어노테이션 적용 대상을 설정

@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
profile
2025.05.~K디지털_풀스택 수업 수강중

0개의 댓글