어노테이션 프로세서 정리하기
인프런 백기선님의 강의 <더 자바, 코드를 조작하는 다양한 방법> 을 수강하면서 공부한 내용을 정리합니다.
1. 개념
애노테이션 프로세서는 소스코드 레벨에서 소스코드에 붙은 에노테이션을 이용하여 컴파일러가 컴파일 하는 중에 새로운 소스코드를 생성하거나 기존의 소스코드를 바꿀 수 있는 기능이다.
2. 사용 예시
Lombok
AutoService : java.util.ServiceLoader 용 파일 생성 유틸리티
오버라이드 대상이 아닌 매소드에 붙였을 때에는 컴파일 에러가 난다.
컴파일 타임에 dependency injection 을 제공해주는 라이브러리
Android Library
ButterKnife : @BindView - 뷰 아이디와 에노테이션 붙인 필드를 바인딩해준다.
DeepLinkDispatch : 특정 URI 링크를 Activity 로 연결할 때 사용된다.
3. 어노테이션 프로세서 특징
장점
런타임 비용이 제로이다.
컴파일 할 때, 이미 뭔가 조작된 상태이다. 따라서 런타임 시에는 추가되는 비용이 없다.
단점
합법적(?)인 public api 가 없다.
lombok 처럼 해킹을 통해 소스코드를 변경하는 방법밖에는 없다. (논란)
Last updated