我有一个使用注解的大型 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/