더 자바 강의 정리(3-6강)

바이트 코드 조작

  • 코드 커버리지: 테스트 코드가 확인한 소스 코드가 얼마나 되는지 검사
  • 바이트 코드를 읽어서 코드 커버리지를 챙겨야 하는 부분을 센 후, 코드가 실행될 때 몇 개를 지나갔는지 비교

바이트 조작 라이브러리

  • ASM: Visitor pattern, Adaptor pattern 활용
  • Javassist
  • Byte buddy

바이트 조작 툴 활용 예

  • 프로그램 분석
    • 코드에서 버그 찾는 툴
    • 코드 복잡도 계산
  • 클래스 파일 생성
    • 프록시
    • 특정 API 호출 접근 제한
    • 스칼라 같은 언어의 컴파일러
  • 그밖에 자바 소스 코드를 건드리지 않고 코드 변경이 필요한 여러 경우에 사용 가능
    • 프로파일러
    • 최적화
    • 로깅

스프링이 컴포넌트 스캔을 하는 방법

  • 컴포넌트 스캔으로 빈을 등록할 후보 클래스 정보를 찾는데 사용
  • ClassPathScanningCandidateComponentProvider -> SimpleMetadataReader
  • asm 사용
  • ClassReader와 Visitor 사용해서 클래스에 있는 메타 정보를 읽어옴