Dev 달팽이 @_''

Java - 애노테이션 프로세서 본문

Java&Spring/더 자바, 코드를 조작하는 다양한 방법

Java - 애노테이션 프로세서

다본죽 2022. 1. 10. 01:20

Java - 어노테이션 프로세서

Lombok(롬복)

  • @Getter, @Setter, @Builder 등의 어노테이션과 어노테이션 프로세서를 제공하여 표준적으로 작성해야할 코드를 개발자 대신 생성해주는 라이브러리
  • 아래 의존성을 추가해야 함
<dependency>
	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
	<version>1.18.8</version>
	<scope>provided</scope>
</dependency>
  • IntelliJ lombok 플러그인 설치
  • IntelliJ Annotation Processing 옵션 활성화

롬복 동작 원리

  • 컴파일 시점에서 어노테이션 프로세서를 사용하여 소스코드의 AST(abstract syntax tree)를 조작

롬복의 논란 거리

  • 공개된 API가 아닌 컴파일러 내부 클래스를 사용하여 기존 소스 코드를 조작
  • 이클립스의 경우엔 java agent를 사용하여 컴파일러 클래스까지 조작하여 사용
  • 해당 클래스들 역시 공개된 API가 아니다보니 버전 호환성에 문제가 생길 수 있고 언제라도 그런 문제가 발생하더라도 이상하지 않음
  • 그럼에도 불구하고 엄청난 편리함 때문에 널리 쓰이고 있으며 대안이 몇 가지 있지만 롬복의 모든 기능과 편의성을 대체하진 못하는 현실