Java의 어노테이션이란?
⭐️ 어노테이션이란 ?
어노테이션이란 코드의 부가적인 의미를 추가해주는 "주석" 같은 기능이다.
소스 코드가 컴파일되거나 실행될 때 컴파일러 및 다른 프로그램에게 필요한 정보를 전달해 주는 문법 요소이다.
자바에서는 @를 이용하여 주석처럼 달아서 사용한다.
⭐️ 어노테이션 종류
어노테이션은 크게 세 가지로 구분이된다.
자바에서 기본적으로 제공하는 표준 어노테이션과 어노테이션을 정의하는데 사용되는 메타 어노테이션,
그리고 사용자 어노테이션이 존재한다.
[ 어노테이션 기본 문법 ]
@Override
public String toString() {
return "Hello";
}
다음과 같이 @ 기호를 사용하여 사용한다.
@Override : 부모 클래스의 메서드를 재정의 했다는 것을 알려준다.
오타나 실수를 컴파일러가 체크해준다 ‼️ -> 장점
아래 나열된 어노테이션들도 위와같이 사용하면 된다.
표준 어노테이션
자바에서 기본적으로 제공하는 어노테이션이다.
@Override
컴파일러에게 메서드를 오버라이딩하는 것이라고 알린다.
@Deprecated
앞으로 사용하지 않을 대상임을 알린다.
@FunctionalInterface
함수형 인터페이스라는 것을 알린다.
@SuppressWarning
컴파일러가 경고 메시지를 나타내지 않는다.
@SafeVaragrs
제네릭과 같은 가변 인자의 매개변수를 사용할 때의 경고를 나타내지 않는다.
메타 어노테이션
어노테이션에 붙이는 어노테이션으로, 어노테이션을 정의하는 데 사용한다.
@Target
어노테이션을 정의할 때 적용 대상을 지정하는 데 사용한다.
@Documented
어노테이션 정보를 javadoc으로 작성된 문서에 포함시킨다.
@Inherited
어노테이션이 하위 클래스에 상속되도록 한다.
@Retention
어노테이션이 유지되는 기간을 정하기 위해 사용한다.
@Repeatable
어노테이션을 반복해서 적용할 수 있도록 한다.
사용자 정의 어노테이션
사용자가 직접 정의하여 사용하는 어노테이션이다.
⭐️ 어노테이션 사용 이유 ?
✨ 코드 간결화
XML 설정파일, 복잡한 설정을 줄이고 코드 안에 의미를 바로 넣을 수 있다.
✨ 자동화
반복되는 코드 없이, 어노테인션만 붙이면 자동으로 기능이 동작한다.
✨ 컴파일러 지원
오타나 잘못된 재정의(@Override)같은 에러를 컴파일 시점에서 잡아준다.
✨ 런타임 로직 제어
리플렉션을 통해 어노테이션을 읽어 특정 로직만 실행 할 수 있다.
* 리플렉션 : 런타임중에 클래스, 메서드, 필드 정보를 보고 조작할 수 있게 해주는 기능이다.
✨ 프레임워크 활용
Spring, Spring Boot, JPA 등 주요 프레임워크는 어노테이션 기반으로 작동한다.