Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
NoSuchBeanDefinitionException@Autowired-Spring 4.1.6.1版本_Spring_Autowired - Fatal编程技术网

NoSuchBeanDefinitionException@Autowired-Spring 4.1.6.1版本

NoSuchBeanDefinitionException@Autowired-Spring 4.1.6.1版本,spring,autowired,Spring,Autowired,我有两门课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.NoSuchBeanDefiniti

我有两门课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”的bean

如果我将“xyz”更改为“b123”,仍然会得到相同的错误(用b123代替xyz)

我有点困惑为什么@Autowired正在寻找@Component中定义的名为bean的bean,但仍然没有找到它! 如果我从类B中的@Component中删除bean名称,那么@Autowired将查找名为“B”的bean,即类名

[这些类位于不同包中的不同罐子中]

在调试spring代码时,我发现spring首先计算要注入的beanName为“xyz”,然后搜索未找到的bean“xyz”,并在DefaultListableBeanFactory.java的第687行抛出NoSuchBeanDefinitionException。
这种行为要么是由于spring中的错误,要么是应用程序中的应用程序上下文真的一团糟

Spring试图将名为“xyz”的bean注入a.b123。在您的配置中,没有任何东西会导致spring尝试这样做。 您的代码:

@Component("xyz")
public class B

正在创建名为“xyz”的bean,但不会导致给定的异常。

请尝试使用@Qualifier@Qualifier当存在不明确的bean时需要。在这种情况下,找不到bean。Spring是否配置为在
B
所在的包中查找组件?@Morfic是的,Spring正在扫描并拾取B。对于自动布线b123,Spring查找类型为B的bean,然后将注入bean的bean名称计算为“xyz”,然后搜索名为“xyz”的bean,但没有找到它!!!根据我的发现,这似乎是正在发生的事情。实际情况稍微复杂一些,因为B被参数化了,需要注入子类型“xyz”。@Prakash您能添加一个来说明确切的情况吗?此外,如果您更喜欢以内联方式共享源代码,而不是通过github或类似的服务共享源代码,请提供有关spring(boot?!)的详细信息&任何其他需要的库版本都会间歇性地处理此问题。意见:1。不同的DefaultListableBeanFactory查找和搜索bean“xyz”。2.如果我有简单的类,这个问题是不可复制的。仅针对泛型类型3存在问题。即使我将找不到的类移动到同一个jar中,问题仍然是可复制的。看起来像是spring处理泛型类型的bug。Java 1.7、Spring 4.1.6、Spring批处理3.0.6、Spring批处理管理1.3.1