Spring Data JPA 는 어떻게 동작할까?
인프런 백기선님의 강의 <더 자바, 코드를 조작하는 다양한 방법> 을 수강하면서 공부한 내용을 정리합니다.
1. 의문점
스프링 데이터 JPA 에서 인터페이스 타입의 인스턴스는 누가 어떻게 만들어주는 것일까?
우리는 @Repository annotation 이나 기타 다른 어노테이션이 없는 JPARepository 를 extend 하여 인터페이스 내부의 함수들을 유용하게 사용하고 있다.
2. 원리는 Proxy
Spring Data JPA 에서는 Spring AOP 를 사용한다.
Spring AOP 는 ProxyFactorySupport 를 사용한다.
ProxyFactorySupport 내부에서는 ProxyFactory 클래스를 통해 Proxy 객체를 만든다.
이렇게 만들어진 Proxy 객체가 빈으로 등록되어, @Autowired 된 Repository 들에게 주입된다.
Last updated