DevBoi

[Java] lombok의 setter/getter 메소드 생성 시점문의 본문

Language/[Java]

[Java] lombok의 setter/getter 메소드 생성 시점문의

HiSmith 2022. 3. 30. 13:16
반응형

롬복의 동작원리는 간단히, 컴파일 시점에 바이트 코드를 변환하여 원하는 부분을 주입해주는 방식이다.

 

과정으로 자세히는

1. 자바 컴파일러는 소스파일을 파싱하여 AST트리를 만든다.

2. Lombok은 AnnotationProcessor에 따라 AST 트리를 동적으로 수정,

새노드를 추가하고 마지막으로 바이트 코드를 분석 및 생성한다.

3. 최종적으로 자바 컴파일러는 Lombok Annotation Processor에 의해 수정된 AST를 기반으로

Byte Code를 생성한다.

 

 

Annotation Processor

Lombok의 의존성을 추가할때 해당 키워드란,

자바 플러그 인의 일종으로, 어노테이션에 대한 코드베이스를 검사, 수정 생성하는 훅이다.

컴파일 에러나, 경고를 내기도하고 소스코드와 바이트코드를 내보내기도 한다.

 

즉, Annotation을 사용하려면 필요하다

Annotation Processor의 동작과정으로는 아래와 같다.

 

1. 어노테이션 프로세서를 사용하는 것은 자바 컴파일러가 알고 있는 상태에서 컴파일을 수행한다.

2.어노테이션 프로세서들이 각자 역할에 맞게 구현되어있는 상태에서 실행되지 않은 어노테이션 프로세서를 실행한다.

3.어노테이션 프로세서내부에서 어노테이션에 대한 처리를 한다.

4.자바 컴파일러가 모든 어노테이션 프로세서가 실행되었는지 검사하고, 모든 어노테이션 프로세서가 실행되지 않았다면 반복한다. 

 

 

반응형

'Language > [Java]' 카테고리의 다른 글

[Java] 옵저버 패턴  (0) 2022.03.30
[Java] 팩토리 디자인 패턴  (0) 2022.03.30
[Java] Enum 클래스  (0) 2022.03.29
[Java] singleTon 디자인 패턴  (0) 2022.03.29
[Java] Reflection 개념 및 사용법  (0) 2022.03.29