不同配置文件中具有相同ID的Spring Bean无法正确自动装配

时间:2017-05-10 12:23:43

标签: xml spring

有多个在Spring中加载的applicationcontexts。

在不同的上下文中有两个相同id但不同类型的bean,这些bean被加载假设 - application1.xml

<bean id="employeeDAO" class="com.one.EmployeeDAO" />

application2.xml

<bean id="employeeDAO" class="com.two.EmployeeDAO" />

在另一个配置文件中有一个构造函数如下 - application3.xml

<bean id="employeeService" class="com.one.EmployeeService">
        <constructor-arg ref="employeeDAO" />
    </bean>

这需要一个类型为 com.one.EmployeeDAO 的bean。

申请流程是 -

  1. 最初加载application1.xml并创建com.one.EmployeeDAO bean。
  2. 然后是application2.xml,它创建了com.one.EmployeeService bean。
  3. 然后是application3.xml,它创建了com.two.EmployeeDAO bean。
  4. 现在在另一个配置文件application4.xml中,当我尝试导入application2.xml时,得到以下异常 -

    org.springframework.beans.factory.UnsatisfiedDependencyException:创建名称为&#39; employeeService&#39;的bean时出错在类路径资源[application2.xml]中定义:通过类型为[com.one.EmployeeService]的索引0的构造函数参数表示的不满意的依赖:无法将类型为[com.two.EmployeeDAO]的构造函数参数值转换为所需类型[com .one.EmployeeDAO]:找不到匹配的编辑器或转换策略

0 个答案:

没有答案