0. 개요

이 글에서는 자동 코드 생성을 위해 사용해 본 JavaPoet 라이브러리 활용 경험을 공유한다. 이 라이브러리를 사용하여 공통 모델 클래스를 특정 도메인에서 복제하고 자동화 한 과정을 설명한다. 자바 포엣 라이브러리의 기본적인 소개와 간단한 사용 방법에 대해서도 다룬다.

1. 목차

  1. 개요
  2. 목차
  3. 배경
  4. 복사 자동화하기
    1. JavaPoet 소개
    2. 사용방법 및 예제
    3. 코드 구현
    4. 결과
  5. 컴파일 자동화하기
    1. 컴파일과 로딩 과정
    2. 효과 및 고려사항
  6. 결론

2. 배경

사내에서 개발 프로세스 개선을 위한 자동화 툴을 개발하면서 두가지 추가 요구사항이 발생했다. 첫째, 기존에 A 도메인에서 사용되던 프로세스 검증 자동화 Tool이 B 도메인에서도 활용될 수 있도록 확장해야 할 것. 문제는 공통 모델에 커스터마이징이 필요했다는 점이다. 이 확장 작업은 기존 도메인에서 사용되던 로그와 새로운 도메인에서 사용되는 로그 간의 호환성을 유지하면서 진행되어야 했다.

둘째, B 도메인에서 사용되는 페이로드가 A 도메인에 비해 약 8-10배 많았고, 로그량 또한 훨씬 많은 상황에서 효율적으로 개선을 해야한다는 것이다. 많은 차이로 수작업의 부담과 변경에 따른 유지보수성을 고려해 페이로드 작성은 자동화로서 구현되어야 했다.

이 두 가지 요구사항을 충족시키기 위해 공통 모듈에서 사용되는 클래스를 프로젝트에 맞도록 커스텀화하고 복사하는 일련의 과정을 자동화하는 솔루션을 생각해보았다.

3. 복사 자동화

3.1. JavaPoet 소개

JavaPoet은 Java 코드를 프로그래밍 방식으로 생성하는 라이브러리이다. 주로 코드 생성 라이브러리로 사용되며, 어노테이션 처리, 소스 코드 생성 및 컴파일 등에 활용된다.

3.2. 사용방법 및 예제

1. TypeSpec, MethodSpec, FieldSpec 등을 활용한 구조 생성

JavaPoet은 클래스, 메서드, 필드 등의 구조를 정의하는 데 사용되는 Spec 객체를 제공한다. 이 객체들을 사용하여 원하는 코드 구조를 생성할 수 있다.