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

升级至Spring Boot 3.2.1与Java 21后Repository Bean无法识别启动失败

问题:升级至Java 21 + Spring Boot 3.2.1后CrudRepository接口无法被识别为Bean

将项目从Java 11、Spring Boot 2.4.5升级到Java 21、Spring Boot 3.2.1后,继承CrudRepository的接口无法被识别为Spring Bean,项目初始化阶段启动失败,报错信息如下:

A component required a bean of type 'com.zoominfo.dozi.passivelogin.repo.CompanyRepo' that could not be found

项目依赖配置(Gradle)

dependencies {
    implementation 'net.logstash.logback:logstash-logback-encoder:7.3'
    implementation 'org.apache.logging.log4j:log4j-core:2.15.0'
    implementation 'org.apache.logging.log4j:log4j-api:2.15.0'
    implementation 'org.apache.logging.log4j:log4j-to-slf4j:2.15.0'

    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-data-redis'
    implementation 'org.springframework.boot:spring-boot-starter-tomcat'

    implementation 'com.google.cloud.sql:mysql-socket-factory:1.6.2'
    implementation 'com.jayway.jsonpath:json-path:2.4.0'
    implementation 'com.onelogin:java-saml-core:2.9.0'
    implementation 'com.onelogin:java-saml:2.9.0'


    implementation 'com.auth0:java-jwt:3.18.2'

    implementation 'commons-lang:commons-lang:2.6'
    implementation 'commons-codec:commons-codec:1.15'

    implementation 'io.github.openfeign:feign-core:10.11'
    implementation 'io.github.openfeign:feign-httpclient:10.11'
    implementation 'io.github.openfeign:feign-jackson:10.11'
    implementation 'io.github.openfeign:feign-slf4j:10.11'

    implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.5.0'

    implementation 'redis.clients:jedis:3.2.0'

    implementation 'org.projectlombok:lombok:1.18.30'
    implementation 'com.google.guava:guava:30.1.1-jre'
    implementation 'com.github.michaelgantman:MgntUtils:1.7.0.1'
    annotationProcessor 'org.projectlombok:lombok:1.18.30'
    runtimeOnly 'mysql:mysql-connector-java:8.0.22'

    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    testImplementation 'io.projectreactor:reactor-test:3.3.9.RELEASE'
    testImplementation 'org.mockito:mockito-junit-jupiter:3.6.28'
    testImplementation 'com.github.tomakehurst:wiremock-standalone:3.0.1'

    testAnnotationProcessor 'org.projectlombok:lombok:1.18.30'
}

Spring Boot版本配置(Gradle)

plugins {
    id 'org.springframework.boot' version '3.2.1'
    id 'java'
}

可能的原因及解决方案

1. 组件扫描范围未覆盖Repository包

Spring Boot 3.x对组件扫描的默认逻辑可能因升级发生变化,需确保Repository所在包被Spring扫描到:

  • 在启动类的@SpringBootApplication注解中显式指定扫描包:
    @SpringBootApplication(scanBasePackages = {"com.zoominfo.dozi.passivelogin"})
    
  • 或者在Repository接口上添加@Repository注解(虽然Spring Data通常自动识别,但升级后显式标注可避免扫描遗漏)。

2. 依赖版本不兼容

部分依赖版本过低,与Spring Boot 3.2.1、Java 21不兼容,需升级:

  • Feign:替换为Spring Cloud OpenFeign(适配Spring Boot 3),或升级原生Feign到12.x+版本(如12.4)。
  • Jedis:升级到4.x系列(如4.4.6),确保支持Java 21和Spring Boot 3。
  • MySQL驱动:升级到8.0.30+版本,适配Java 21。
  • Java SAML:升级com.onelogin:java-saml到3.x版本,兼容Spring Boot 3。

3. Java版本配置缺失

确保Gradle中明确指定Java 21作为编译和运行版本:

java {
    sourceCompatibility = JavaVersion.VERSION_21
    targetCompatibility = JavaVersion.VERSION_21
}

4. Repository接口定义问题

检查Repository接口的正确性:

  • 确保正确继承CrudRepository,泛型参数无误(如public interface CompanyRepo extends CrudRepository<Company, Long>)。
  • 实体类需标注@Entity和@Id注解,确保JPA能识别实体。

5. 自动配置被禁用

检查application.properties/yml中是否存在禁用Spring Data JPA自动配置的配置,如spring.autoconfigure.exclude,确保未排除org.springframework.boot.autoconfigure.data.jpa.JpaRepositoriesAutoConfiguration。

内容的提问来源于stack exchange,提问作者Michael Gantman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 14:41:04