java - Spring 发现 beans 从版本 4.3 更改为版本 5

标签 java spring dependency-injection

我有一个使用注解的大型 spring 应用程序,在 spring 4.3.13 中运行良好,我希望更新到 spring 5。我遇到了连接 bean 的各种故障,这看起来很典型:

Unsatisfied dependency expressed through field 'pcoDAO'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.acme.dao.impl.contracts.PotentialChangeOrderDAO' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

开启spring debug logging,只增加这一行

Failed to meta-introspect annotation interface org.springframework.beans.factory.annotation.Autowired: java.lang.NullPointerException

并不是所有@Autowired 字段都会失败,只有这个(到目前为止)。 bean 由一个接口(interface)指定,实现在该接口(interface)的子包中,但这在以前也是有效的。接口(interface)的包直接在 上下文:组件扫描 base-package="com.acme.package.of.interface"

同样这在 4.3.13 中工作正常,唯一的变化是 spring 升级到 5.0.5-RELEASE。

它们是否对 spring 查找 bean 的方式有任何已知的更改?或任何关于此的文档?

最佳答案

似乎是 Spring 5.0.5 的一个错误,并已在 5.0.6 中修复,请参见 Null check needed in AnnotationUtils.getAnnotation

关于java - Spring 发现 beans 从版本 4.3 更改为版本 5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49762328/

相关文章:

c# - 如何在N层应用中实现IDependencyResolver?

spring - 启动 Spring Boot 应用程序而不检查 Kafka Server

jakarta-ee - CDI:@Produces 方法在使用 AnnotationLiteral 调用实例后未注入(inject)

c# - 在 Azure 应用程序中为两个存储帐户设置依赖项注入(inject)

java - Spring-security 甚至在提交表单之前就显示 'Bad Credentials'

java - 数据源拒绝建立连接,来自服务器 : "Too many connections" 的消息

java - HIbernate 多对多与 self 实体使用注释

java - 由于以下问题无法启动服务器 : Launch process failed with exit code 1

java - Spring Boot - application.properties 中的程序参数

java - 如何将 d3 (javascript) 添加到 vaadin 应用程序?