자바에는 @~ 와 같이 @로 표시하는 특수한 개념이 있습니다.
가장 많이 쓰는 @Override 어노테이션이 가장 대표적인 어노테이션입니다!
자바 어노테이션은 JDK5에서 처음 추가된 개념이며, 개발자들의 편의성과 가독성
그리고 유효성 검사 측면에서 유리함을 가져다줍니다.
자바에서는 기본적으로 제공하는 몇 가지의 어노테이션이 존재하고
유저 커스텀을 통하여 새로운 어노테이션을 정의할 수도 있습니다.
대표적으로 자바의 Spring Framework나 Lombok 라이브러리는 어노테이션을
잘 활용하는 예시입니다.
JDK5 기준으로는 기본적으로 3개의 어노테이션을 제공했으며
이후로 Java8까지 몇 가지의 어노테이션이 추가되었습니다.
@Override
@Deprecated
@SuppressWarnings
@SafeVarags
@FunctionallInterface
위에서 어노테이션은 유저가 커스텀하여 새로 생성할수도 있다고 언급했습니다.
이러한 유저 커스텀 어노테이션 생성을 위하여 존재하는 어노테이션입니다.
해당 어노테이션을 어떤 범위에 적용할때 사용할 것인지 명시하는 어노테이션입니다.
@Target() 과 같이 사용하는데, 괄호 안에 대상을 기입하여 사용합니다
어노테이션에 대한 정보의 지속시간에 대한 어노테이션입니다.
Target과 마찬가지로 괄호 안에 지속시간을 명시합니다.
해당 어노테이션에 대한 정보가 Java API문서에 포함됨을 선언합니다.
모든 자식 클래스에서 부모 클래스의 어노테이션을 사용 가능함을 선언합니다.
어노테이션이 등장하기 전에는 모든 자바 어플리케이션의 설정을
XML이나 properties에 정의해줘야 했습니다. 하지만 어노테이션이 등장하면서
코드의 가독성이 향상되었고, 개발자들의 편의성도 향상되었습니다.
가장 쉽게 접할 수 있는 Lombok과 같은 경우는 개발자들이 자주 사용하는
메소드들(Getter, Setter 등등)을 어노테이션 하나로 생성해주기도 하죠 ㅎㅎ
사실 실제 개발에서 어노테이션을 직접 커스텀하여 사용할일은 그렇게 많지 않지만
어노테이션이란 무엇이고, 어떤 방식으로 동작하는지에 대해서는 알아야 할 것 같습니다.