백엔드
java 코드는 어떻게 자동으로 만들어질까(2/2)
두줄요약
Lombok이 AST를 수정해 getter를 class 파일에 반영하는 과정을 설명했습니다. ASM 기반 바이트코드 조작과 Spring AOP·JaCoCo 활용 사례를 소개합니다.
구조와 흐름
- Java 컴파일의 파싱·구문 분석, annotation processor, 분석·파일 생성 단계
- 소스 코드를 AST로 변환한 뒤 트리 노드 조작을 거쳐 class 파일 생성
- Lombok의 annotation processing 단계 AST 수정과 getter 바이트코드 반영
핵심 내용
- 일반 annotation processor의 신규 Java 파일 생성 방식과 Lombok의 기존 소스 파일 비수정 방식 차이
- ASM의 ClassReader·ClassVisitor·ClassWriter 기반 클래스 읽기·수정·쓰기 기능
- CGLIB 기반 Spring AOP 프록시와 JaCoCo 코드 커버리지 측정의 바이트코드 조작 활용
주의할 점
- Java 파일과 컴파일 결과물인 class 파일의 수정 대상 구분
- Querydsl·Lombok 관련 오류 발생 시 annotation processor 단계부터 점검
적용해볼 점
- 코드 생성 라이브러리 사용 시 컴파일 단계와 생성·변형 위치 이해
- annotation processor 오류 문구를 기반으로 원인 범위 축소


