![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/ETe7q/btqzR2CnO8p/y81cnVuVvMFL3duxKplz2K/img.png)
애노테이션 프로세서 2 애노테이션 프로세서를 사용하여 @Magic 애노테이션을 가지고 있는 경우 Moja 타입의 인터페이스를 구현하는 MagicMoja 클래스를 생성해본다. JavaPoet 새로운 소스코드를 생성할때 매우 유용한 라이브러리가 있다. 매우 직관적인것이 장점. com.squareup javapoet 1.11.1 애노테이션 프로세서 구현하기 2 지난번에 이어 애노테이션 프로세서 구현해보자. ClassName Element를 TypeElement로 변환한뒤, JavaPoet을 사용하여 ClassName 타입의 객체로 변환한다. 이 타입의 객체는 클래스 정보들을 참조할 수 있다. MethodSpec 우리가 생성할 클래스의 메소드 스팩을 구현한다. methodBuilder(메소드명): 구현할 메소드..
애노테이션 프로세서 - 1 Moja Interface pullOut() 메소드만 존재하는 인터페이스를 정의 @Magic 애노테이션 Target을 TYPE으로 지정하면, 인터페이스 ,클래스, ENUM에 지정이 가능하다. Rentention정보를 소스레벨 까지만 유지하고, 컴파일 시점에 애노테이션 프로세서를 상요해 MagicMoja 를 생성할 것이다. 애노테이션 프로세서를 사용하여, @Magic 애노테이션이 적용된 인터페이스가 존재하면, MagicMoja 라는 클래스를 생성할 것이다. MagicMojaProcessor Processor Interface를 사용해도 되지만, 자바에서 기본으로 제공하는 AbstractProcessor 추상 클래스를 사용한다. 인터페이스에서 기본으로 구현해야할 것들을 어느정도 구..
애노테이션 프로세서 롬복은 어떻게 동작할까 ? 롬복은 지루하고 반복적인 코드를 자동적으로 생성해주는 툴이다. getter, setter, toString... 롬복의 원리 자바가 제공하는 애노테이션 프로세서를 이용한 기술 컴파일 시점에 끼어들어 특정 애노테이션이 붙은 소스코드를 참조해 다른 소스코드를 생성할수 있는 기능이다. 자바코드, 문서 등을 만들어 낼 수 있다. AST(Abstarct Syntax Tree) 소스코드의 정보를 트리구조로 볼 수 있다. 이를 신텍스 트리라고 한다. 본래는 참조만 가능하다. 논란 거리 공개된 API가 아닌 컴파일러 내부 클래스를 사용하고 기존 소스코드를 조작한다. 특히 이클립스의 경우 java agent를 사용하여 컴파일러 클래스까지 조작하여 사용한다. 해당 클래스들 역..