인프런 워밍업 클럽

인프런 워밍업 1기_BE 1일차 과제

유지인 2024. 4. 29. 23:10

 



 

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 어노테이션은 설명하지는 않았지만, 여러가지 옵션값을 가지고 있으며,

기본 내장 어노테이션을 사용하는 둥, 커스텀 어노테이션을 사용하여 개발자가 의도하는 명시적인 어노테이션을 만듬으로써 좀 더 간결한 코드를 표현할 수 있다고 생각합니다.


출처