🔥새해맞이 특별 라이브 선착순 신청🔥

[인프런 워밍업 클럽 0기] BE 1일차 과제

[인프런 워밍업 클럽 0기] BE 1일차 과제

어노테이션을 사용하는 이유 (효과) 는 무엇일까?

  • 어노테이션의 특징

    • 컴파일된 프로그램의 동작을 변경하지 않습니다.

    • 메타데이터(정보)를 프로그램 요소(예: 인스턴스 변수, 생성자, 메서드, 클래스 등)에 연결하는 데 도움이 됩니다.

    • 컴파일러에서 프로그램이 처리되는 방식을 변경할 수 있습니다.

    • 런타임에 코드에 대한 메타데이터로 활용할 수 있습니다.

위의 특징으로 인해 어노테이션을 사용하여 다음과 같은 효과를 누릴 수 있습니다.

  1. 코드 문서화: 어노테이션은 코드에 메타데이터를 추가하여 코드를 문서화하고 설명하는 데 도움이 됩니다. 예를 들어, @Deprecated 어노테이션은 해당 메소드나 클래스가 더 이상 사용되지 않음을 표시하여 개발자에게 해당 요소를 사용하지 말라는 경고를 줍니다.

  2. 컴파일러 경고 및 오류 감지: 어노테이션을 사용하여 코드에 대한 컴파일러 경고를 생성하거나 오류를 감지할 수 있습니다. 예를 들어, @Override 어노테이션은 메소드가 슈퍼 클래스나 인터페이스의 메소드를 재정의하는 것임을 명시하므로, 잘못된 메소드 이름을 사용하는 등의 실수를 사전에 방지할 수 있습니다.

  3. 런타임 처리 및 동작 변경: 어노테이션은 런타임 환경에서 특정 동작을 변경하거나 처리할 수 있습니다. 예를 들어, Spring 프레임워크에서 @Autowired 어노테이션은 자동으로 의존성을 주입하여 개발자가 별도로 객체를 생성하고 관리할 필요 없이 편리하게 사용할 수 있도록 해줍니다.

  4. 코드 분석 및 프로세싱: 어노테이션을 사용하여 코드를 분석하고 특정 작업을 수행하는데 활용할 수 있습니다. 예를 들어, 특정 어노테이션을 가진 메소드를 찾아 실행시간에 동적으로 처리하거나, 특정 어노테이션에 따라 코드를 생성하는 등의 작업을 할 수 있습니다.

  5. 프레임워크와 라이브러리 통합: 많은 프레임워크와 라이브러리가 어노테이션을 사용하여 특정 기능을 활성화하거나 구성할 수 있습니다. 예를 들어, JPA(Java Persistence API)에서는 엔티티 클래스에 @Entity 어노테이션을 사용하여 해당 클래스가 데이터베이스의 테이블과 매핑되는 것을 지정합니다.

 

 

나만의 어노테이션은 어떻게 만들 수 있을까?

나만의 어노테이션을 만들려면 다음과 같은 단계를 따를 수 있습니다:

  1. @interface를 사용하여 어노테이션 정의: 어노테이션을 정의하기 위해 @interface 키워드를 사용합니다. 예를 들어, 다음은 간단한 어노테이션을 정의하는 방법입니다:

javaCopy codeimport java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Retention(RetentionPolicy.RUNTIME) // 이 어노테이션을 런타임까지 유지하도록 지정
@Target(ElementType.METHOD) // 이 어노테이션을 메소드에 적용할 수 있도록 지정
public @interface MyAnnotation {
    String value() default ""; // 어노테이션 매개변수 정의
}
  1. 어노테이션 적용: 정의한 어노테이션을 사용하려는 대상(메소드, 클래스 등)에 어노테이션을 적용합니다.

javaCopy codepublic class MyClass {
    @MyAnnotation("example")
    public void myMethod() {
        // 메소드 내용
    }
}
  1. 어노테이션 사용: 정의한 어노테이션을 사용하여 필요한 로직을 구현합니다. 어노테이션에 맞게 동작하는 코드를 작성할 수 있습니다. 예를 들어, 런타임에 어노테이션이 적용된 메소드를 찾고 특정 동작을 수행하는 등의 작업을 수행할 수 있습니다.

javaCopy codeimport java.lang.reflect.Method;

public class AnnotationProcessor {
    public static void main(String[] args) {
        MyClass obj = new MyClass();
        Method[] methods = obj.getClass().getMethods();
        
        for (Method method : methods) {
            if (method.isAnnotationPresent(MyAnnotation.class)) {
                MyAnnotation annotation = method.getAnnotation(MyAnnotation.class);
                System.out.println("Method Name: " + method.getName());
                System.out.println("Annotation Value: " + annotation.value());
            }
        }
    }
}

위의 예제는 어노테이션이 적용된 메소드를 찾고, 해당 어노테이션의 값을 출력하는 간단한 예시입니다.

이처럼 직접 어노테이션을 만들어 사용할 수 있으며, 해당 어노테이션을 활용하여 유용한 기능을 추가할 수 있습니다.

 

댓글을 작성해보세요.

채널톡 아이콘