我有两个A和B班。
@Component("abc")
public class A {
@Autowired
private B b123;
}
@Component("xyz")
public class B {
}
在应用程序启动时(在tomcat中)我收到以下错误: BeanCreationException:无法自动装配字段:private B A.b123;嵌套异常是org.springframework.beans.factory.NoSuchBeanDefinitionException:没有名为' xyz'已定义
如果我改变了' xyz'到' b123' ,我仍然得到相同的错误(用b123代替xyz)
我有点疑惑为什么@Autowired正在寻找@Component中定义的名称的bean,但仍未找到它! 如果我从B类中的@Component中删除bean名称,那么@Autowired将查找名称为' B'的bean,即类名!
[这些课程在不同包装的不同罐子里]
调试spring代码,我发现Spring首先计算要注入的beanName作为' xyz',稍后它会搜索bean' xyz'它找不到并在DefaultListableBeanFactory.java的第687行抛出NoSuchBeanDefinitionException。 这种行为要么是由于春天的错误,要么应用程序上下文在应用程序中真的搞砸了!
答案 0 :(得分:0)
Spring尝试注入一个名为&x; xyz'的bean。进入A.b123。在你的配置中,没有任何东西可以导致春天尝试这个。 你的代码:
Phone#
正在创建一个名为' xyz'的bean。但不会导致给定的例外。