从xml自动装配@Resource并使用它们生成bean列表

时间:2017-02-13 20:03:32

标签: java spring resources autowired

让我们假设以下情况。在spring xml配置文件中有创建的bean:

<bean id="a" class="com.example.A" />
<bean id="b" class="com.example.B" />
<bean id="c" class="com.example.C" />
<bean id="d" class="com.example.D" >
    <property name="myList" ref="myListBean">
</bean>

Java配置文件:

@Configuration
@ImportResource("path/to/beans.xml")
class JavaConfiguration {
    @Resource
    A a;

    @Resource
    B b;

    @Resource
    D d;

    @Resource
    C c;

    @Bean
    List myListBean(){
        List l = new ArrayList();
        l.add(a);
        l.add(b);
        l.add(c);
        return l;
    }
}

由于@Resource D d在@Resource C c之前,因此Bean'myListBean'将只包含{a,b,null}。如果我切换它并且@Resource C在D之前,那么一切都很好。是否有任何良好的做法可以避免这种情况,不依赖于字段顺序并阻止创建带有空值的bean列表?

1 个答案:

答案 0 :(得分:0)

我认为没有办法完全按照自己的意愿行事。

如果两者之间没有依赖关系,则无法保证在myListBean之前由Spring注入C.如果你需要C有一个正确的myListBean,那么应该有一个依赖。