1.
annotation processor 동작
•
왜 사용하는가? @ExcelModel로 마킹된 DTO를 모두 처리하기 위하여 사용.
◦
고려했던 사항 : 컴포넌트 스캔과 같이 모든 패키지를 검사할지, DTO가 들어올때 검사할지
•
어떻게 사용하는가? 일반적으로 AbstractProcessor 를 구현하면 된다.
•
주의점 : annotation을 처리하여 클래스 코드를 만들어 삽입한다. 이때 path가 안맞는 경우가 생긴다.
2.
바이트 코드 삽입
•
javapoet 사용
◦
비교사항
▪
bytebuddy : aop 또는 메서드 호출 인터셉트에 주로 사용
▪
일반적으로 출력 스트림 이용 : 안정성이 떨어짐
•
javapoet 사용처
◦
Gradle
◦
Auto common Libraries
•
안정성
◦
따로 취약점 또는 안정성에 관한 자료는 없음.
◦
junit에 관련 취약점이 존재하는 것 같음
3.
의존성 주입 또는 컴포넌트 스캔과 유사한 기능
•
classGraph
◦
사용 이유
▪
생성된 클래스를 런타임에 로드 필요
▪
Class.forName()을 통해서도 가능하고 경로의 특정 패턴을 찾을 수 있음. 이 부분에서 classGraph가 좋은 선택지 같음.
•
classGraph 사용처
◦
Querydsl JPA Support
◦
Swagger JAXRS2
•
안정성
◦
버전 안정적
◦
jdk 7,8,9 지원
◦
클래스로더와 비교
◦
간단한 사용성