JavaConfig中定义的bean的NoSuchBeanDefinitionException

我之前在项目中使用XML配置,并且一切正常。

我们正在逐步转向Java配置,所以现在我正处于混合使用Java和XML配置的阶段。

问题出在这里,我的XML配置中定义了一个bean:beanA。

<bean id="beanA" class="BeanA" />

BeanA类对BeanB具有自动绑定的依赖关系。

class BeanA {
     @Autowired
     BeanB beanB;
}

以前,此beanB也在XML配置中,并且可以正确运行。

现在,我已经进行了此更改,并且不再起作用:

@Configuration
class MyConfig {
    @Bean
    public BeanB beanB() {
        return new BeanB();
    }
}

除了添加@Configuration@Bean注释之外,还有其他需要做的事情吗?

我遇到以下错误:

  

org.springframework.beans.factory.UnsatisfiedDependencyException:创建名称为'beanB'的bean时出错:通过字段'beanA'表示的不满足的依赖关系;

     

嵌套的异常是org.springframework.beans.factory.NoSuchBeanDefinitionException:没有可用的com.xxxxxx.yyy.zzzzzzzzzzzzzz.abc.beanA类型的合格Bean:

     

期望至少有1个可以作为自动装配候选者的bean。依赖注释:{@ org.springframework.beans.factory.annotation.Autowired(required = true)}

请注意

  1. 我仅移动了通过Java配置创建的beanB。

  2. BeanA实际上具有更多的依赖关系,因此我无法在此阶段将其移至java config(稍后将进行适当的迁移)。

ping00000 回答:JavaConfig中定义的bean的NoSuchBeanDefinitionException

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

,

春季不会从带有@Configuration的类中加载Bean,除非已被告知查找带有该注释的类。

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

<context:component-scan base-package="com.xxxxx.yyy.zzzz">

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

本文链接:https://www.f2er.com/3123349.html

大家都在问