인프런 워밍업 1기_BE 1일차 과제
Q1. 어노테이션을 사용하는 이유(효과)는 무엇일까?
해당 질문에 대답을 하기 위해서는 먼저 Java의 어노테이션에 대해 알아야 한다고 생각해서 위키 피디아에서 찾아보았습니다.
자바 애너테이션(Java Annotation)은 자바 소스 코드에 추가하여 사용할 수 있는 메타데이터의 일종이다. 보통 @ 기호를 앞에 붙여서 사용한다.
메타데이터 - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. 2010년대에 메타데이터는 일반적으로 디지털 형태를 가리킨다. 그러나 1960~1970년대의 전통적인 카드 카탈로그들 또한 메타데이터의 한 예로 들 수 있으며, 이 카
ko.wikipedia.org
그럼 위키피디아에서 말하는 메타데이터는 무엇일까?
그 메타데이터의 설명 또한 위키피디아에서 찾을 수 있었는데, "데이터에 관한 구조화된 데이터로, 다른 데이터를 설명해 주는 데이터이다".
여기서부터는 제 개인적인 생각입니다.
저는 이 두가지 정보에서 Java의 어노테이션이란, Java의 소스코드에서 별도의 다른 클래스 및 기능을 Java를 사용하는 개발자가 추가적인 개발을 진행하지 않아도 공통적으로 어떤 목적을 가지고 만들어진 데이터(constructed data with a purpose)를 설명하기 위한 것이 아닐지 생각이 들었습니다.
그렇기 때문에, Q1에서 묻는 "어노테이션을 사용하는 이유(효과)"는 명시적인 어노테이션을 사용함으로써, 해당 클래스를 설명할 수 있는 효과를 지니고 있다고 생각합니다.
Q2. 나만의 어노테이션은 어떻게 만들 수 있을까?
먼저 @interface 를 사용해서 사용자 정의 어노테이션을 만들 수 있습니다.
이렇게 생성된 CustomAnnotation은 아무런 기능을 할 수 없어 사용할 수 없는 상태입니다.
public @interface CustomAnnotation {
}
그래서 아래와 같이 @Target , @Retention 어노테이션을 사용하여 Spring에서 해당 파일을 인식할 수 있도록 선언하여 사용하여주어야합니다.
import java.lang.annotation.*;
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface CustomAnnotation {
}
위와 같이 만들어진 사용자 정의 어노테이션은 아래 코드와 같이 사용 될 수 있습니다.
import java.lang.annotation.*;
@CustomAnnotation
class Test {
}
@Target, @Retention 어노테이션은 설명하지는 않았지만, 여러가지 옵션값을 가지고 있으며,
기본 내장 어노테이션을 사용하는 둥, 커스텀 어노테이션을 사용하여 개발자가 의도하는 명시적인 어노테이션을 만듬으로써 좀 더 간결한 코드를 표현할 수 있다고 생각합니다.
출처