어노테이션 프로세서 정리하기

인프런 백기선님의 강의 <더 자바, 코드를 조작하는 다양한 방법> 을 수강하면서 공부한 내용을 정리합니다.

1. 개념

  • 애노테이션 프로세서는 소스코드 레벨에서 소스코드에 붙은 에노테이션을 이용하여 컴파일러가 컴파일 하는 중에 새로운 소스코드를 생성하거나 기존의 소스코드를 바꿀 수 있는 기능이다.

2. 사용 예시

  • Lombok

  • AutoService : java.util.ServiceLoader 용 파일 생성 유틸리티

  • @Override

    • 오버라이드 대상이 아닌 매소드에 붙였을 때에는 컴파일 에러가 난다.

  • Dagger 2

    • 컴파일 타임에 dependency injection 을 제공해주는 라이브러리

  • Android Library

    • ButterKnife : @BindView - 뷰 아이디와 에노테이션 붙인 필드를 바인딩해준다.

    • DeepLinkDispatch : 특정 URI 링크를 Activity 로 연결할 때 사용된다.

3. 어노테이션 프로세서 특징

  • 장점

    • 런타임 비용이 제로이다.

      • 컴파일 할 때, 이미 뭔가 조작된 상태이다. 따라서 런타임 시에는 추가되는 비용이 없다.

  • 단점

    • 합법적(?)인 public api 가 없다.

    • lombok 처럼 해킹을 통해 소스코드를 변경하는 방법밖에는 없다. (논란)

Last updated