백기선 자바스터디 12주차

<< 총 15주차 까지 진행되며 주어지는 키워드를 가지고 블로그에 정리하며 공부하는 스터디 입니다 ! >>
목표
자바의 애노테이션에 대해 알아내세요.
학습할 것 (필수)
- 애노테이션을 설명하는 방법
- @retention
- @target
- @documented
- 애노테이션 프로세서
스프링프레임 워크를 사용한다면 @어노테이션을 자주 사용하게 될것이다.
고민해볼필요가 있다.
1. 자바 어노테이션
- 자바에서 어노테이션은 사전적 의미로는 주석이라는 뜻을 가지고 있는데,
소스코드에 추가해서 사용할 수 있는 메타데이터의 일종을 말한다.
메타데이터란 애플리케이션이 처리해야할 데이터가 아니라 컴파일 과정과 실행과정에서
코드를 어떻게 처리해야 하는지를 알려주기 위한 추가정보다
자바의 어노테이션은 보통 @요거 앞에 붙여서 쓰는데
jdk 1.5버전 이상에서부터 사용가능하고
자바의 어노테이션은 클래스 파일에 임베드 되어 컴파일러에 의해 생성된이후 jvm에 포함되어 동작한다.
자바 어노테이션을 이용하면 뭘 할수 있느냐 ?
1. 컴파일러에게 코드 작성 문법 에러를 체크하도록 정보제공 !
2. 소프트웨어 개발환경이 빌드나 배포시 코드를 자동으로 생성할수 있도록 정보제공
3. 런타임에 특정기능을 실행하도록 정보를 제공
자바 시스템에서 기본으로 제공하는 어노테이션들이 많이 있다
필요에따라서 사용자가 직접 커스텀 어노테이션을 만들어서 사용할수도 있다.
빌트인 되어있는 어노테이션 알아보기
@Override
@Deprecated
@SuppressWarinings
@SafeVarargs
@FunctionalInterface
@메타 어노테이션
@Retention
@Documented
@Target
@Inherited
@Repeatable
요런애들이 있다.





그니까!
먼저 정의가 필요한데
@interface 어노테이션 이름 이라는 형태로 어노테이션을 정의해야한다.
어노테이션을 정의할때 , 생성되는 어노테이션에 대한 메타 어노테이션은 ??
어노테이션 정의 앞쪽에 붙여준다.



Annotation Processor란?
Annotation Processor는 컴파일 단계에서 Annotation에 정의된 일렬의 프로세스를 동작하게 하는 것을 의미합니다.
컴파일 단계에서 실행되기 때문에,
빌드 단계에서 에러를 출력하게 할 수 있고,
소스코드 및 바이트 코드를 생성할 수도 있습니다.
사용하는 예로 자바의 @Override가 있으며, Lombok(롬북)이라는 라이브러리도 있습니다.
Lombok은 자주 사용하는 라이브러리로 한번 살펴보겠습니다.
Lombok이란?
@Getter, @Seteer, @Builder 등의 Annotation과 Annotation Processor를 제공하여 표준적으로
작성해야 할 코드를 개발자 대신 생성해주는 라이브러리 입니다.
컴파일 시점에 Annnotation Processor를 사용하여 abstract syntaxtree를 조작합니다.