Spring Boot3+JDK17升级后PermissionRepository Bean找不到问题求助
Spring Boot 3.x + JDK17升级后JPA Repository Bean无法找到问题
升级Spring Boot至3.0.5版本,同时将JDK从11升级到17后,应用启动时抛出如下错误:
com.fx.ln.user.DefaultPermissionService的构造器参数0需要类型为com.app.user.repositories.PermissionRepository的Bean,但找不到。
相关代码
PermissionRepository
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; import java.util.List; @Repository public interface PermissionRepository extends JpaRepository<PermissionEntity, Long> { List<PermissionEntity> findPermissionByUserID(UserEntity userEntityId); }
PermissionEntity
import jakarta.persistence.*; import lombok.*; import lombok.experimental.FieldDefaults; import org.hibernate.Hibernate; import java.util.Objects; @Getter @Setter @ToString @RequiredArgsConstructor @FieldDefaults(level = AccessLevel.PRIVATE) @Entity @Table(name = "permission") public class PermissionEntity { @Id @Column(name = "permission_id", nullable = false) long permissionId; @ManyToOne @JoinColumn(name = "user_id", referencedColumnName = "user_id", nullable = false) UserEntity userID; @Column(name = "ot_broker_id") long otBrockerId; @ManyToOne @JoinColumn(name = "enq_group_id", referencedColumnName = "enq_group_id", nullable = false) EnquiryGroup enquiryGroupId; @Column(name = "legal_entity_code") String legalEntityCode; @Column(name = "access_code") String accessCode; @Column(name = "access_structure") String accessStructure; @Column(name = "permission_type") long permissionType; @Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || Hibernate.getClass(this) != Hibernate.getClass(o)) { return false; } PermissionEntity permission = (PermissionEntity) o; return Objects.equals(permissionId, permission.permissionId); } @Override public int hashCode() { return getClass().hashCode(); } }
pom.xml依赖配置
<modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.0.5</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <java.version>17</java.version> <maven.compiler.source>17</maven.compiler.source> <maven.compiler.target>17</maven.compiler.target> <project.build.sourceEncoding>UTF8</project.build.sourceEncoding> <spring-boot-starter-web.version>3.0.5</spring-boot-starter-web.version> <spring-webflux.version>6.0.7</spring-webflux.version> <spring-security-core.version>6.0.2</spring-security-core.version> <spring-security-web.version>6.0.2</spring-security-web.version> <springdocopenapi.version>2.0.4</springdocopenapi.version> <modelmapper.version>2.4.5</modelmapper.version> <lombok.version>1.18.26</lombok.version> <git-commit-id-plugin.version>4.9.10</git-commit-id-plugin.version> <gson.version>2.9.1</gson.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j2</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webflux</artifactId> </dependency> <dependency> <groupId>io.projectreactor.netty</groupId> <artifactId>reactor-netty</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-core</artifactId> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency> <dependency> <groupId>com.oracle.database.jdbc</groupId> <artifactId>ojdbc11</artifactId> </dependency> <dependency> <groupId>org.flywaydb</groupId> <artifactId>flyway-core</artifactId> </dependency> <dependency> <groupId>org.modelmapper</groupId> <artifactId>modelmapper</artifactId> <version>${modelmapper.version}</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>${gson.version}</version> </dependency> <dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId> <version>${springdocopenapi.version}</version> </dependency> <!-- TEST DEPENDENCIES --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-api</artifactId> <!-- <version>${junit.version}</version>--> <scope>test</scope> </dependency> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-engine</artifactId> <!-- <version>${junit.version}</version>--> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-test</artifactId> <!-- <version>${spring-security-core.version}</version>--> <scope>test</scope> </dependency> <dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>mockwebserver</artifactId> <!-- <version>${mockwebserver.version}</version>--> <scope>test</scope> </dependency> </dependencies>
application.yaml配置
spring: jpa: database-platform: org.hibernate.dialect.OracleDialect show-sql: true open-in-view: true datasource: url: ${database_url} # jdbc:oracle:thin:@server1.domain.com:1521/DEV username: ${user} password: ${password} driver-class-name: oracle.jdbc.OracleDriver flyway: locations: classpath:db/migration
已尝试的解决方案
- 移除Flyway脚本及依赖
- 修改数据库连接地址
- 升级ojdbc到11版本
- 将
javax.persistence替换为jakarta.persistence - 添加
@EnableJpaRepositories注解
开启-Dlogging.level.org.springframework=TRACE启动应用后,可看到包含NoSuchBeanDefinitionException在内的多个异常栈信息,但问题仍未解决,希望得到帮助。
内容的提问来源于stack exchange,提问作者Amhyry
相关产品推荐
相关产品推荐

