You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot启动报错:找不到UserRepository Bean的排查方案

Spring Boot启动错误:找不到UserRepository Bean

启动Spring Boot项目时出现Bean注入失败错误,核心问题为CustomUserDetailsService构造函数依赖的com.example.demo.repository.UserRepository类型Bean不存在。以下是项目的pom.xml文件、启动日志,以及针对性排查步骤:

pom.xml代码

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.2.3</version>
        <relativePath/> <!-- lookup parent from repository -->
        <configuration>
            <mainClass>com.example.demo.DemoApplication</mainClass>
    </configuration>
    </parent>
    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>21</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        
        
<dependency>
    <groupId>jakarta.servlet</groupId>
    <artifactId>jakarta.servlet-api</artifactId>
    <version>5.0.0</version> <!-- or the appropriate version -->
    <scope>provided</scope>
</dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-webflux</artifactId>
        </dependency>

        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <scope>runtime</scope>
        </dependency>

          <dependency>
        <groupId>javax.persistence</groupId>
        <artifactId>javax.persistence-api</artifactId>
        <version>2.2</version>
     </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>io.projectreactor</groupId>
            <artifactId>reactor-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-test</artifactId>
            <scope>test</scope>
        </dependency>
        
        <dependency>
           <groupId>org.projectlombok</groupId>
          <artifactId>lombok</artifactId>
           <version>1.18.20</version>
           <scope>provided</scope>
     </dependency>
     <!-- Maven -->
     <dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-jpa</artifactId>
    <version>2.5.5</version>
     </dependency>
        
            <dependency>
             <groupId>jakarta.validation</groupId>
             <artifactId>jakarta.validation-api</artifactId>
              <version>3.0.0</version> <!-- Use the latest version here -->
              </dependency>


    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        
        </plugins>
    </build>

</project>

启动日志

/Desktop/beckend/java_back$  /usr/bin/env /usr/lib/jvm/java-21-openjdk-amd64/bin/java -agentlib:jdwp=transport=dt_socket,server=n,suspend=y,address=localhost:42975 @/tmp/cp_2akgesudot11bi0kws3dn676g.argfile com.example.demo.DemoApplication 
Error: could not open `/tmp/cp_2akgesudot11bi0kws3dn676g.argfile'
vansh@satellite:~/Desktop/beckend/java_back$  cd /home/vansh/Desktop/beckend/java_back/demo ; /usr/bin/env /usr/lib/jvm/java-21-openjdk-amd64/bin/java -agentlib:jdwp=transport=dt_socket,server=n,suspend=y,address=localhost:46277 @/tmp/cp_ej0uoxrfv0buwdyy0i6h7o7rl.argfile com.example.demo.DemoApplication 

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v3.2.3)

2024-03-11T16:16:05.139+05:30  INFO 237523 --- [           main] com.example.demo.DemoApplication         : Starting DemoApplication using Java 21.0.2 with PID 237523 (/home/vansh/Desktop/beckend/java_back/demo/target/classes started by vansh in /home/vansh/Desktop/beckend/java_back/demo)
2024-03-11T16:16:05.144+05:30  INFO 237523 --- [           main] com.example.demo.DemoApplication         : No active profile set, falling back to 1 default profile: "default"
2024-03-11T16:16:07.100+05:30  WARN 237523 --- [           main] onfigReactiveWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'springSecurity': Unsatisfied dependency expressed through field 'userDetailsService': Error creating bean with name 'customUserDetailsService' defined in file [/home/vansh/Desktop/beckend/java_back/demo/target/classes/com/example/demo/security/CustomUserDetailsService.class]: Unsatisfied dependency expressed through constructor parameter 0: No qualifying bean of type 'com.example.demo.repository.UserRepository' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
2024-03-11T16:16:07.143+05:30  INFO 237523 --- [           main] .s.b.a.l.ConditionEvaluationReportLogger : 

Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.
2024-03-11T16:16:07.237+05:30 ERROR 237523 --- [           main] o.s.b.d.LoggingFailureAnalysisReporter   : 

***************************
APPLICATION FAILED TO START
***************************

Description:

Parameter 0 of constructor in com.example.demo.security.CustomUserDetailsService required a bean of type 'com.example.demo.repository.UserRepository' that could not be found.

The injection point has the following annotations:
        - @org.springframework.beans.factory.annotation.Autowired(required=true)


Action:

Consider defining a bean of type 'com.example.demo.repository.UserRepository' in your configuration.

vansh@satellite:~/Desktop/beckend/java_back/demo$ 

排查步骤

  • 检查组件扫描范围:确保主启动类DemoApplication所在包能覆盖UserRepository所在的com.example.demo.repository包,可通过@SpringBootApplication(scanBasePackages = "com.example.demo")显式指定扫描范围;如果是Spring Data JPA接口,需确保主启动类标注@EnableJpaRepositories(basePackages = "com.example.demo.repository")。
  • 校验Repository接口注解:如果UserRepository是Spring Data JPA接口,需标注@Repository或@RepositoryRestResource,且继承JpaRepository等Spring Data规范接口,Spring会自动生成代理Bean。
  • 修正依赖版本冲突:当前Spring Boot 3.2.3对应Spring Data JPA 3.x版本,手动引入的spring-data-jpa:2.5.5版本不兼容,需移除该依赖,使用Spring Boot Parent管理的版本;同时javax.persistence-api需替换为jakarta.persistence-api(Spring Boot 3.x基于Jakarta EE 9+规范)。
  • 验证Bean定义一致性:若通过XML配置Bean,确保id属性与注入时的名称匹配;避免混用XML与Java配置导致多上下文问题。
  • 审查注入点配置:检查CustomUserDetailsService构造函数的注入注解,确保没有自定义限定符导致Bean匹配失败。
  • 调试Bean创建流程:添加启动参数--debug查看条件评估报告,或设置断点追踪UserRepositoryBean的创建过程,确认是否因初始化异常导致Bean未生成。

内容的提问来源于stack exchange,提问作者Vansh Goel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 01:05:54