Spring JavaConfig中定义的bean的NoSuchBeanDefinitionException

Spring JavaConfig中定义的bean的NoSuchBeanDefinitionException,spring,javabeans,autowired,xmlbeans,Spring,Javabeans,Autowired,Xmlbeans,早些时候,我在项目中使用了XML配置,一切正常 我们正逐渐转向java配置,所以现在我正处于一个混合使用java和XML配置的阶段 问题是,在我的XML配置中定义了一个bean:beanA <bean id="beanA" class="BeanA" /> 之前,这个beanB也在XML配置中,并且运行正确 现在,我做了这个改变,但它不再有效: @Configuration class MyConfig { @Bean pub

早些时候,我在项目中使用了XML配置,一切正常

我们正逐渐转向java配置,所以现在我正处于一个混合使用java和XML配置的阶段

问题是,在我的XML配置中定义了一个bean:beanA

<bean id="beanA" class="BeanA" />
之前,这个beanB也在XML配置中,并且运行正确

现在,我做了这个改变,但它不再有效:

@Configuration
class MyConfig {
    @Bean
    public BeanB beanB() {
        return new BeanB();
    }
}
除了添加
@Configuration
@Bean
注释外,我还缺少其他需要做的事情吗

我得到以下错误:

org.springframework.beans.factory.unsatifiedpendencyException:创建名为“beanB”的bean时出错:通过字段“beanA”表示未满足的依赖关系

嵌套异常为org.springframework.beans.factory.NoSuchBeanDefinitionException:没有“com.xxxxxx.yyy.zzzzzzzz.abc.beanA”类型的合格bean可用:

至少需要1个符合autowire候选资格的bean。依赖项注释:{@org.springframework.beans.factory.annotation.Autowired(required=true)}

请注意

  • 我只移动了通过java配置创建的beanB

  • BeanA实际上有更多的依赖项,所以在这个阶段我不能将其移动到java配置(稍后将进行适当的迁移)


  • 您还需要在xml配置中添加BeanB的配置。当程序运行时,它从xml配置文件加载所有bean定义。因此,配置文件中似乎缺少BeanB定义。

    Spring不会从带有
    @Configuration
    注释的类中加载bean,除非告诉它查找带有此注释的类

    要使spring查找这些类,必须在xml配置中添加以下内容:

    然后它将递归地查找并初始化包com.xxxxx.yyy.zzzz中的所有bean。

    好了,事情是这样的,我确实让它在xml文件中处理bean,但我想将它们移出。因此,BeanB定义被故意从XML中删除。
    @Configuration
    class MyConfig {
        @Bean
        public BeanB beanB() {
            return new BeanB();
        }
    }