컴파일 타임 흐름
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
•
parser를 통해 parsing된 의미 있는 데이터를 generator로 전달
◦
generator는 생성된 메타 정보를 바탕으로 class 제작
•
generator에 의해 전달 받은 JavaFile 객체를 통해 실제 write 작업
색 | 의미 |
주황색 | WARNING
잠재적 예외 가능성 및 출력 |
빨강색 | ERROR
Processor 실행 불가 상태 및 출력 |