홈 › 고급 › 08 / 10

어노테이션·리플렉션·동적 프록시

Spring 과 MyBatis 가 움직이는 원리
섹션 7진행 0 / 10

7. 정리

  • 어노테이션은 표식일 뿐이고, @Retention(RUNTIME) 이어야 실행 중에 읽힙니다.
  • 리플렉션은 Class 객체에서 필드·메서드·어노테이션을 꺼내 읽고 호출하는 도구입니다. private 은 setAccessible(true) 로 엽니다.
  • Method.invoke 의 예외는 InvocationTargetException 으로 감싸이므로 getCause() 로 풀어 줍니다.
  • 동적 프록시는 인터페이스 호출을 핸들러 하나로 모읍니다. 앞뒤에 무엇을 넣는가가 AOP 입니다.
  • @Transactional 은 프록시가 BEGIN/COMMIT/ROLLBACK 을 감싸는 것이고, 내부 호출은 프록시를 거치지 않습니다.
  • MyBatis 매퍼는 인터페이스의 SQL 어노테이션(또는 XML)을 읽어 바인딩·실행·매핑하는 프록시입니다.
  • 리플렉션·프록시 비용은 DB 호출 앞에서 무시할 수준이지만, 내부 루프에서는 Method 를 캐시합니다.