목록 보기
java 코드는 어떻게 자동으로 만들어질까(2/2)
백엔드

java 코드는 어떻게 자동으로 만들어질까(2/2)

야놀자클라우드
야놀자클라우드
2022년 6월 20일

두줄요약

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 오류 문구를 기반으로 원인 범위 축소

다음 읽기

#Java 주제를 이어서 읽기

java 코드는 어떻게 자동으로 만들어질까(1/2)

Java annotation processor로 컴파일 단계에서 DTO 코드를 자동 생성하는 원리를 소개했습니다. JavaPoet과 AbstractProcessor 기반 예제로 반복 코드 감소 방식을 설명합니다.

야놀자클라우드
야놀자클라우드
백엔드

댓글 0개

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...