Annotation Processor

Panda·2022년 3월 22일
1

Spring

목록 보기
12/42

Lombok을 처음 써봤는데
어노테이션 getter setter를 사용했는데
IDE에서는 인식되서 잘됬는데
컴파일하는 도중 cannot find symbol 에러가 발생했습니다.

해결방법

구글링하다가 겨우 찾아냈는데 그것은 바로

annotationProcessor("org.projectlombok:lombok")

이거를 gradle 에 추가해 주면 문제는 깔끔히 해결됩니다.
자 그럼 해결되서 끝이 아니라 왜 해결됬는지 알아봐야겠죠?

Annotation Processor 가 뭔데?

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

자 여기서 어노테이션은 실제 코드가 아닌 단순한 주석인 것을 명심해야 합니다!!
즉 아무리 @Getter, @Setter 를 명시해봤자 주석인거지 뭣도 아닙니다.

여기서 Annotation Processor가 어노테이션을 기반으로 실제 코드를 검사, 수정, 생성 을 하게 됩니다!!!

따라서 해결방법을 작성하게 되면 컴파일러한테 어노테이션 확인할 때 Lombok 어노테이션도 같이 봐주세요!! 라고 하는겁니다.

기본적으로 포함되어 있는 어노테이션이 아니면 annotationProcessor 을 통해 추가를 해줘야한다고 합니다.

동작구조

  1. 어노테이션 프로세서를 사용한다는 것을 자바 컴파일러가 알고 있는 상태에서 컴파일을 수행

  2. 어노테이션 프로세서들이 각자의 역할에 맞게 구현되어 있는 상태에서 실행되지 않은 어노테이션 프로세서를 실행

  3. 어노테이션 프로세서 내부에서 어노테이션에 대한 처리

  4. 자바 컴파일러가 모든 어노테이션 프로세서가 실행 되었는지 검사하고, 모든 어노테이션 프로세서가 실행되지 않았다면 반복

즉 Annotation Processor 가 Lombok 어노테이션을 인식하고 실제 코드를 생성해주는 과정을 수행을 하게됩니다.

느낀 점

분명 Lombok 작동 안되는 것에 대해서만 해결방법을 찾았는데
어쩌다보니 Annotation Processor 라는 것도 공부해서 기분이 좋네요

profile
실력있는 개발자가 되보자!

0개의 댓글