더 자바 강의 정리(3-6강)
14 Jun 2020바이트 코드 조작
- 코드 커버리지: 테스트 코드가 확인한 소스 코드가 얼마나 되는지 검사
- 바이트 코드를 읽어서 코드 커버리지를 챙겨야 하는 부분을 센 후, 코드가 실행될 때 몇 개를 지나갔는지 비교
바이트 조작 라이브러리
- ASM: Visitor pattern, Adaptor pattern 활용
- Javassist
- Byte buddy
바이트 조작 툴 활용 예
- 프로그램 분석
- 코드에서 버그 찾는 툴
- 코드 복잡도 계산
- 클래스 파일 생성
- 프록시
- 특정 API 호출 접근 제한
- 스칼라 같은 언어의 컴파일러
- 그밖에 자바 소스 코드를 건드리지 않고 코드 변경이 필요한 여러 경우에 사용 가능
- 프로파일러
- 최적화
- 로깅
스프링이 컴포넌트 스캔을 하는 방법
- 컴포넌트 스캔으로 빈을 등록할 후보 클래스 정보를 찾는데 사용
- ClassPathScanningCandidateComponentProvider -> SimpleMetadataReader
- asm 사용
- ClassReader와 Visitor 사용해서 클래스에 있는 메타 정보를 읽어옴