[워밍업클럽] BE 1기 #과제1

[워밍업클럽] BE 1기 #과제1

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

어노테이션이란? 프로그램의 소스코드안에 다른 프로그램을 위한 정보를 저장하고, 이 기능을 응용하여, 프로그램의 소스코드안에 다른 프로그램을 위한 정보를 미리 약속된 형식으로 포함시킨 것이다.

 

'@Test'는 '이 메서드를 테스트해야한다'라는 것을 테스트 프로그램에게 알리는 역할을 한다.

(주석처럼 프로그램자체에는 아무런 영향을 미치지 않음 , 해당 프로그램에 미리 정의된 종류와 형식으로 작성해야만 의미가 있다.)

 

그렇다면, 어노테이션은 왜 사용할까?

어노테이션을 활용하면 코드의 가독성을 높이고 개발 과정을 간소화할 수 있다.

어노테이션이 등장하기 이전에는 코드와 설정파일을 따로 작성하였는데 프로그램 규모가 커질수록 설정파일을 관리하기에 어려움이 있었다. 어노테이션을 사용하여 이러한 어려움을 해결할 수 있게 되었다. 또한 리플렉션을 사용하여 런타임시에 동적으로 어노테이션 정보를 처리할 수 있다. 작성시점에는 어떠한 클래스를 사용해야 할지 모르지만, 런타임 시점에 클래스를 가져와 실행해야 할 경우 리플렉션이 활용되며 대표적으로 스프링 프레임워크의 어노테이션이 동적으로 클래스 정보를 가져온다.

 

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

  1. @interface 인터페이스 선언

    1. @Retention(RetentionPolicy.RUNTIME) 컴파일 이후에도 JVM에 의해 참조 가능

    2. @Target(ElementType.TYPE) 타입 선언 시 어노테이션을 적용

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

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface MyAnnotation {
    String value() default "";
}

@MyAnnotation(value = "Hello MyAnnotationClass")
public class MyClass {

}
import java.lang.annotation.Annotation;

public class MyAnnotationTest {
    public static void main(String[] args) {
        myAnnotation();
    }

    public static void myAnnotation(){
        Annotation[] annotations = MyClass.class.getDeclaredAnnotations();
        for(Annotation annotation: annotations) {
            if(annotation instanceof  MyAnnotation){
                MyAnnotation myAnnotation = (MyAnnotation) annotation;
                System.out.println(myAnnotation.value());
            }
        }
    }
}

 

강의

- 자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지], https://inf.run/XKQg

 

출처

자바의정석 12장 애노테이션

https://geunskoo.com/blog-2024-04-16/study-for-annotation/

https://ahnyezi.github.io/java/javastudy-12-annotation/

https://mysterlee.tistory.com/74

https://blog.naver.com/zzang9ha/222090490272

댓글을 작성해보세요.