Spring Boot应用无法识别@Repository注解 启动提示找不到ProductRepository Bean
问题根因
你的启动类主动排除了DataSourceAutoConfiguration数据源自动配置类,导致Spring Data JPA的自动装配流程被中断,不会为继承了JpaRepository的ProductRepository接口生成实现类并注册到Spring容器中,因此ProductService注入依赖时找不到对应的Bean。
解决方案
步骤1:修改启动类注解
移除数据源自动配置的排除规则,新增JPA仓库扫描、实体类扫描注解,修改后的启动类代码如下:
package com.javanovice.crud.example; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.domain.EntityScan; import org.springframework.data.jpa.repository.config.EnableJpaRepositories; @SpringBootApplication @EnableJpaRepositories(basePackages = "com.javanovice.crud.example.repository") @EntityScan(basePackages = "com.javanovice.crud.example.entity") public class SpringBootCrudExampleApplication { public static void main(String[] args) { SpringApplication.run(SpringBootCrudExampleApplication.class, args); } }
步骤2:确认依赖已引入
检查你的项目构建文件(pom.xml/build.gradle)中已引入Spring Data JPA和对应数据库的驱动依赖,以Maven+MySQL为例:
<!-- Spring Data JPA依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <!-- MySQL驱动依赖,使用其他数据库请替换为对应驱动 --> <dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> <scope>runtime</scope> </dependency>
步骤3:确认数据源配置正确
检查src/main/resources下的application.properties或application.yml中已配置合法的数据库连接信息,示例如下:
# 数据源配置 spring.datasource.url=jdbc:mysql://localhost:3306/你的数据库名称?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8 spring.datasource.username=你的数据库用户名 spring.datasource.password=你的数据库密码 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver # JPA相关配置 spring.jpa.hibernate.ddl-auto=update spring.jpa.show-sql=true spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect
内容的提问来源于stack exchange,提问作者mohanaroy
相关产品推荐
相关产品推荐

