스프링데이터 + JPA/스프링 데이터 JPA

6. 공통 인터페이스 설정

sdafdq 2023. 11. 19. 16:08

스프링 부트 사용 시 생략 가능하긴 한데,

 

@SpringBootApplication
@EnableJpaRepositories(basePackages = "study.datajpa.repository")
public class DataJpaApplication {

	public static void main(String[] args) {
		SpringApplication.run(DataJpaApplication.class, args);
	}
}

저렇게 JpaRepository들 어디에 있는지 경로 써줬어야 했음.

근데 스프링 부트 쓰면 그냥 저 그러니까 스프링 실행하는 곳, 여기 포함 및 하위를 그냥 다 스캔함.

 

그래서 사실 명시할 필요 없음.

 

 

우리가,

public interface MemberRepository extends JpaRepository<Member, Long> {
}

이렇게 하면 구현 클래스를 만들어서 빈으로 등록시켜 준다고 했었다.

memberRepository = class jdk.proxy2.$Proxy116

뭔지 로그로 남겨보았다. 

 

스프링 데이터 JPA가 애플리케이션 로딩 시점에 JpaRepository들 스캔해서 구현해서 빈으로 넣어놓는다.

 

참고로 @Repository 안 붙여줘도 구현체에 알아서 붙어 있는 듯 하다.