Annotation Processor
Lombok을 처음 써봤는데
어노테이션 getter setter를 사용했는데
IDE에서는 인식되서 잘됬는데
컴파일하는 도중 cannot find symbol
에러가 발생했습니다.
해결방법
구글링하다가 겨우 찾아냈는데 그것은 바로
annotationProcessor("org.projectlombok:lombok")
이거를 gradle 에 추가해 주면 문제는 깔끔히 해결됩니다.
자 그럼 해결되서 끝이 아니라 왜 해결됬는지 알아봐야겠죠?
Annotation Processor 가 뭔데?
자바 컴파일러 플러그인의 일종으로, 어노테이션에 대한 코드베이스를 검사, 수정, 생성하는 역할이라고합니다.
자 여기서 어노테이션은 실제 코드가 아닌 단순한 주석인 것을 명심해야 합니다!!
즉 아무리 @Getter
, @Setter
를 명시해봤자 주석인거지 뭣도 아닙니다.
여기서 Annotation Processor가 어노테이션을 기반으로 실제 코드를 검사, 수정, 생성 을 하게 됩니다!!!
따라서 해결방법을 작성하게 되면 컴파일러한테 어노테이션 확인할 때 Lombok 어노테이션도 같이 봐주세요!! 라고 하는겁니다.
기본적으로 포함되어 있는 어노테이션이 아니면 annotationProcessor
을 통해 추가를 해줘야한다고 합니다.
동작구조
-
어노테이션 프로세서를 사용한다는 것을 자바 컴파일러가 알고 있는 상태에서 컴파일을 수행
-
어노테이션 프로세서들이 각자의 역할에 맞게 구현되어 있는 상태에서 실행되지 않은 어노테이션 프로세서를 실행
-
어노테이션 프로세서 내부에서 어노테이션에 대한 처리
-
자바 컴파일러가 모든 어노테이션 프로세서가 실행 되었는지 검사하고, 모든 어노테이션 프로세서가 실행되지 않았다면 반복
즉 Annotation Processor 가 Lombok 어노테이션을 인식하고 실제 코드를 생성해주는 과정을 수행을 하게됩니다.
느낀 점
분명 Lombok 작동 안되는 것에 대해서만 해결방법을 찾았는데
어쩌다보니 Annotation Processor 라는 것도 공부해서 기분이 좋네요
Author And Source
이 문제에 관하여(Annotation Processor), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@boo105/Annotation-Processor저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)