IT 지식 (기술면접 대비)

Java의 어노테이션이란?

KoesJin 2025. 4. 25. 09:27

⭐️ 어노테이션이란 ?

어노테이션이란 코드의 부가적인 의미를 추가해주는 "주석" 같은 기능이다.

 

소스 코드가 컴파일되거나 실행될 때 컴파일러 및 다른 프로그램에게 필요한 정보를 전달해 주는 문법 요소이다.

 

자바에서는 @를 이용하여 주석처럼 달아서 사용한다.

 

⭐️ 어노테이션 종류

어노테이션은 크게 세 가지로 구분이된다.

 

자바에서 기본적으로 제공하는 표준 어노테이션과 어노테이션을 정의하는데 사용되는 메타 어노테이션,

그리고 사용자 어노테이션이 존재한다.

 

[ 어노테이션 기본 문법 ]

@Override
public String toString() {
    return "Hello";
}

 

다음과 같이 @ 기호를 사용하여 사용한다.

 

@Override : 부모 클래스의 메서드를 재정의 했다는 것을 알려준다.

 

오타나 실수를 컴파일러가 체크해준다 ‼️ -> 장점 

 

아래 나열된 어노테이션들도 위와같이 사용하면 된다.

 


 

표준 어노테이션

자바에서 기본적으로 제공하는 어노테이션이다.

 

@Override

컴파일러에게 메서드를 오버라이딩하는 것이라고 알린다.

 

@Deprecated

앞으로 사용하지 않을 대상임을 알린다.

 

@FunctionalInterface

함수형 인터페이스라는 것을 알린다.

 

@SuppressWarning

컴파일러가 경고 메시지를 나타내지 않는다.

 

@SafeVaragrs

제네릭과 같은 가변 인자의 매개변수를 사용할 때의 경고를 나타내지 않는다.

 


 

메타 어노테이션

어노테이션에 붙이는 어노테이션으로, 어노테이션을 정의하는 데 사용한다.

 

@Target

어노테이션을 정의할 때 적용 대상을 지정하는 데 사용한다.

 

@Documented

어노테이션 정보를 javadoc으로 작성된 문서에 포함시킨다.

 

@Inherited

어노테이션이 하위 클래스에 상속되도록 한다.

 

@Retention

어노테이션이 유지되는 기간을 정하기 위해 사용한다.

 

@Repeatable

어노테이션을 반복해서 적용할 수 있도록 한다.

 


 

사용자 정의 어노테이션

사용자가 직접 정의하여 사용하는 어노테이션이다.

 

⭐️ 어노테이션 사용 이유 ?

 

✨ 코드 간결화

 

XML 설정파일, 복잡한 설정을 줄이고 코드 안에 의미를 바로 넣을 수 있다.

 

✨ 자동화

반복되는 코드 없이, 어노테인션만 붙이면 자동으로 기능이 동작한다.

 

✨ 컴파일러 지원

오타나 잘못된 재정의(@Override)같은 에러를 컴파일 시점에서 잡아준다.

 

✨ 런타임 로직 제어

리플렉션을 통해 어노테이션을 읽어 특정 로직만 실행 할 수 있다.

 

* 리플렉션 : 런타임중에 클래스, 메서드, 필드 정보를 보고 조작할 수 있게 해주는 기능이다.

 

✨ 프레임워크 활용

Spring, Spring Boot, JPA 등 주요 프레임워크는 어노테이션 기반으로 작동한다.