java - spring 正在寻找第一个字母大写错误的 bean
问题描述
我有一个我肯定的 bean 在 spring 正在扫描的包中(它的所有兄弟姐妹都成功地工作)。
@Service
class BeanB {
}
@Service
@DependsOn("BeanB")
class BeanA {
@Autowired
BeanB b;
}
但是,当我运行它时,我得到了这个:
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'BeanB' available
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:682)
at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1218)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:284)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:297)
... 34 more
然而BeanB
是存在的。
当我深入研究 spring 内部(DefaultListableBeanFactory beanDefinitionMap)时,它说它有一个名为beanB
. 为什么spring无法找到并连接正确的@AutoWired
(或@Inject
bean,第一个字母的大写似乎已关闭?
我看过什么是 NoSuchBeanDefinitionException 以及如何修复它?但它似乎没有处理“我的bean在那里但无法从大写中找到”的情况
解决方案
事实证明,试图找到合适的 bean 来自动装配并没有死,真正的罪魁祸首是,@DependsOn
但它确实让我陷入了一个循环,所以在这里记录它。
修复:使用 spring 样式类 -> 命名约定:
@DependsOn("beanB")
class BeanA {
...
推荐阅读
- javascript - rails 是如何为全局前缀的。到我的供应商文件夹中的资产脚本?
- java - 在 Android 上安全运行的 Spark 服务器是否有效?
- python - 如何在表单验证条件之前使用cleaned_data?
- video - 在同一命令中减小使用 ffmpeg 制作的视频的大小
- python - 熊猫数据框:根据其他列中的条件更改列中的值
- apache-flex - 如何在 AS3/AIR 的 textArea 中动态创建上下文菜单?
- python - 如何确定您是否在 colab 中安装了 colab pro?
- python - 如何将 event.width 存储在 python 的变量中?
- c# - 当 URL 在浏览器中正常加载时出现“SocketException:名称或服务未知”
- python - 如何从pairplot中删除对角线图