Search

2차 구조 정의(컴파일 타임 흐름과 역할, 책임 정의)

컴파일 타임 흐름

1.
annotation processor 실행
2.
@ExcelModel Class Elements parsing
3.
파싱 된 모델을 class 형태로 생성
4.
해당 class write
개략적인 명칭
역할
책임
Processor
@ExcelModel을 Model 생성
정상적인 Model을 생성
Processor - Parser
@ExcelModel을 Generator가 class를 생성 가능한 형태로 파싱
@ExcelModel에 붙은 여러 annotation에서 의미 있는 정보를 추출
Processor - Generator
Parser를 통해 의미있는 데이터 형태를 Model을 상속 받은 class로 제작
런타임에 실행 가능한 정상적인 class 정보 생성
생성된 클래스
메타데이터를 사용하는 방법을 제공하고, Register에 자신을 등록.
DTO에 대한 메타데이터를 의미있는 형태로 전달
필요 메시지 필요 데이터 타입
의미
MetaDataType
Generator측에서 해당 데이터 리스트가 어떤 카테고리에 해당되는지 판별할 수 있는 타입 FIELD(Element.class) SHEET_STYLE(SheetStyleConfig.class) HEADER_STYLE(CellStyleConfig.class) CELL_STYLE(CellStyleConfig.class) FORMAT(String.class) HEADER_NAME(String.class) DEFAULT_VALUE(String.class)
Map<MetaDataType, List<?>>
parser에 의해서 의미있는 데이터만 추출된 정보를 모은 데이터. MetaDataType과 연계하여 List<?>에 사용.
JavaFile
Generator에 의해서 생성된 java class 객체.
processor
parser에게 Element를 전달
parser는 의미 있는 정보를 Generator가 class를 생성하기 쉬운 형태로 parsing
의미 없는 정보 또는 잘못된 정보가 있을 경우 parsing 중지
parser를 통해 parsing된 의미 있는 데이터를 generator로 전달
generator는 생성된 메타 정보를 바탕으로 class 제작
생성 시 문제 발생 가능성 없음. 이유는 parser가 정상적인 메타데이터를 주지 못했기 때문에 parser가 모든 책임을 가짐.
generator에 의해 전달 받은 JavaFile 객체를 통해 실제 write 작업
JavaFile을 write하는 과정에 발생한 문제는 예측 불가 path문제 또는 접근 권한 문제 등이 존재할 가능성 있음. 만약 예외발생 시 중지 이후 메시지 출력.
의미
주황색
WARNING 잠재적 예외 가능성 및 출력
빨강색
ERROR Processor 실행 불가 상태 및 출력