티스토리 뷰

Java annotationProcessor

annotation processor는 Java에서 주석(annotation)을 처리하기 위한 툴이다.

자바 컴파일러 플러그인의 일종으로, 컴파일 타임에 어노테이션에 대한 코드베이스를 검사, 수정, 생성하는 역할을 한다.

즉, 어노테이션을 사용하기 위해서는 어노테이션 프로세서가 필요하다.

 

Annotation Processor를 사용하는 과정

1. 사용자는 코드 내에서 주석(annotations)을 사용한다. 이후 사용자는 자바 컴파일러(javac)로 코드를 컴파일하게 된다.

2. 구현: 컴파일러는 소스 코드 내의 어노테이션과 그에 해당하는 어노테이션 프로세서를 찾아 매칭한다. 이를 통해 해당 어노테이션을 처리할 수 있는 어노테이션 프로세서를 실행하게 된다.
주로 javax.annotation.processing.AbstractProcessor 클래스를 상속받아 구현한다.

3. 등록: 어노테이션 프로세서를 등록한다.
META-INF/services/javax.annotation.processing.Processor 파일에 프로세서의 완전한 클래스 이름을 추가한다.

4. 적용: 사용자 정의 어노테이션을 소스 코드에 적용한다. 

5. 컴파일: 컴파일러는 모든 어노테이션이 적절히 처리되었는지 확인한다. 만약 처리되지 않은 어노테이션이 있거나, 어노테이션 프로세서의 실행 중 새로운 어노테이션이 코드에 추가되었다면, 해당 어노테이션들을 처리하기 위해 어노테이션 프로세서의 실행을 반복한다.
컴파일러가 어노테이션 프로세서를 실행하면, 프로세서는 소스 코드에 적용된 주석을 처리한다.

 

Kotlin KAPT (Kotlin Annotation Processing Tool)

Kotlin에서 annotation 처리를 위해서 KAPT(Kotlin Annotation Processing Tool)을 제공한다.

 

Java에서의 Annotation Processors와 유사한 기능을 제공하지만, Kotlin은 kotlinc로 컴파일되기 때문에 기존에 Java로 작성된 Annotation Process로는 Kotlin의 Annotation이 제대로 처리되지 않는다.

따라서 Kotlin 프로젝트에서 특정 라이브러리나 도구가 컴파일 타임 어노테이션 프로세싱을 필요로 할 경우 kapt를 사용해야 한다.

 

예를 들면, spring-boot-configuration-processor는 컴파일 타임에 @ConfigurationProperties 어노테이션을 처리하여 메타데이터 파일을 생성한다.

 

 

 

 

반응형