更新到 Spring Boot 2.2.1 后出现 NoSuchBeanDefinitionException

2024-03-18

将现有代码从 Spring Boot 2.2.0 升级到 2.2.1 后,我遇到了一个奇怪的问题。
看来我的 spring data jdbc 存储库不再以某种方式被扫描:

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'de.thd.dmpk.establishmentmanagement.IEstablishmentRepository' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}

此外,引导 2.2.1 中也存在此信息调试行:

Spring Data JDBC - Could not safely identify store assignment for repository candidate interface de.thd.dmpk.establishmentmanagement.IEstablishmentRepository. If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table.

当我将所有内容切换回启动 2.2.0 时,信息消息以及上述异常都消失了。

有什么提示吗?

EDIT
Entity

@Getter
@RequiredArgsConstructor(staticName = "of", access = AccessLevel.PUBLIC, onConstructor = @__({@PersistenceConstructor}))
@EqualsAndHashCode
public final class Establishment {

private final @Id
@With
long establishmentId;

@NotNull
@NotEmpty
@Size(max = 255)
private final
String establishmentName;
}

存储库

interface IEstablishmentRepository extends CrudRepository<Establishment, Long>

到现在为止一个@Table如果您不想更改数据库上的表名称,则不需要注释。此外@EnableJdbcRepositories以这种方式扫描每个文档:

如果没有配置基础包,则使用基础包所在的包 配置类驻留。https://docs.spring.io/spring-data/jdbc/docs/current/reference/html/#jdbc.java-config https://docs.spring.io/spring-data/jdbc/docs/current/reference/html/#jdbc.java-config

那里发生了奇怪的事情:)


应该更热情地阅读控制台输出:

Spring Data JDBC - 无法安全地识别存储库候选接口 de.thd.dmpk.builtmentmanagement.IEstablishmentRepository 的存储分配。如果您希望此存储库成为 JDBC 存储库,请考虑使用以下注释之一来注释您的实体:org.springframework.data.relational.core.mapping.Table。

用注释我的实体@Table完成工作。放入我的实体后一切正常。

这背后的原因是DATAJDBC-437 https://jira.spring.io/browse/DATAJDBC-437。 当 Spring Data JDBC 与其他 Spring Data 模块一起使用时,Spring Data JDBC 过去常常对所有存储库负责,导致每个接口有多个 bean。 为了避免在这种情况下@Table要被视为 JDBC 存储库主题的聚合根需要注释。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

更新到 Spring Boot 2.2.1 后出现 NoSuchBeanDefinitionException 的相关文章

随机推荐