어노테이션 프로세서(Annotation Processor)

김형진·2023년 6월 10일
0

자바에서는 어노테이션 프로세서라는 기능이 제공된다.

컴파일 시점에 특정 어노테이션에 대한 처리를 설정해줄 수 있는 기능인데,

우리가 자주 사용하는 어노테이션 프로세서의 대표 예시로는 Lombok이 있다.

Lombok프로젝트에는 @Getter, @Setter와 같이 실무에서 자주 사용하는 어노테이션에 대한 처리가 구현되어있는데,

롬복 의존을 까보면 내부적으로 우리가 자주 사용되는 Getter어노테이션이 정의되어 있고

@SupportedAnnotationTypes("com.어쩌구.Getter")
@SupportedSourceVersion(SourceVersion.RELEASE_8)
public class GetterProcessor extends AbstractProcessor {
    
    @Override
    public return값 process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
        구현
    }
}

직접 프로세서를 찾지 못했지만,, 대충 이런 식으로 구현되어있지 않을까 생각하며 직접 작성해보았다.

아무튼 해당 어노테이션에 대한 처리를 담당하는 어노테이션 프로세서가 구현되어 있어서

컴파일 시점, 컴파일러가 annotation을 읽어들인 뒤 해당 어노테이션을 담당하는 프로세서를 찾아 이후의 처리를 위임하는 식으로 동작하게 된다.

그래서 컴파일이 완료된 바이트코드 파일을 보면 @Getter어노테이션은 사라져있고 대신 Class내에 get메소드가 정의되어 있게 된다.

profile
히히

0개의 댓글