Spring Boot EnableJpaRepositories
TMTSpring Boot에서 @EnableJpaRepositories
가 자동 구성(Auto-Configuration)되기 위해 필요한 의존성과 조건은 다음과 같습니다.
1. 필수 의존성 (Dependencies)
@EnableJpaRepositories
는 Spring Data JPA 모듈의 일부로, 다음 의존성이 반드시 필요합니다:
Gradle (build.gradle
)
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
runtimeOnly 'com.mysql:mysql-connector-j'
}
2. 자동 구성이 동작하는 조건
Spring Boot는 다음 조건이 충족될 때 JPA 관련 빈을 자동으로 구성합니다:
-
DataSource
빈이 존재할 때application.properties
/application.yml
에 데이터베이스 연결 정보가 설정되어 있어야 합니다.- 예시:
spring.datasource.url=jdbc:mysql://localhost:3306/mydb spring.datasource.username=user spring.datasource.password=pass spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver # driver도 url을 통해서 자동으로 찾아줌
-
JPA 구현체 (예: Hibernate)가 클래스패스에 있을 때
spring-boot-starter-data-jpa
는 기본적으로 Hibernate를 포함합니다.
-
@Entity
클래스가 스캔될 패키지 경로가 정의되어 있을 때- 기본적으로
@SpringBootApplication
이 선언된 패키지와 하위 패키지를 스캔합니다. - 다른 패키지를 사용한다면
@EntityScan
으로 명시해야 합니다.
- 기본적으로
3. @EnableJpaRepositories
의 역할
- JPA 리포지토리 인터페이스 자동 검색
basePackages
속성으로 지정된 패키지에서JpaRepository
를 상속한 인터페이스를 찾아 구현체를 생성합니다. - Spring Data JPA의 기능 활성화
쿼리 메서드,@Query
, 페이징/정렬 등의 기능을 사용할 수 있습니다.
4. 자동 구성 실패 시 확인 사항
Case 1: 의존성 누락
spring-boot-starter-data-jpa
가 없거나 데이터베이스 드라이버가 추가되지 않은 경우.
Case 2: DataSource
설정 오류
application.properties
에 데이터베이스 연결 정보가 없거나 잘못된 경우.
Case 3: 패키지 경로 불일치
- 리포지토리 인터페이스가
@EnableJpaRepositories
의basePackages
범위 밖에 있는 경우.
Case 4: JPA 구현체 충돌
- Hibernate 외 다른 JPA 구현체 (예: EclipseLink)가 의존성에 포함된 경우
spring.jpa.provider
를 명시해야 합니다.
5. 예시 구성
기본 자동 구성 (별도 설정 불필요)
@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
커스텀 설정 (패키지 경로 변경 시)
@SpringBootApplication
@EnableJpaRepositories(basePackages = "com.example.repository")
@EntityScan(basePackages = "com.example.domain")
public class MyApplication {
// ...
}
✅ 정리
- 필수 의존성:
spring-boot-starter-data-jpa
+ 데이터베이스 드라이버. - 자동 구성 조건:
DataSource
설정 +@Entity
클래스와 리포지토리 인터페이스가 올바른 패키지에 위치. - 문제 해결: 의존성 체크 →
DataSource
설정 확인 → 패키지 경로 검토.