'依赖于'在Spring java中

时间:2015-09-12 16:06:16

标签: java spring spring-mvc

我正在学习春天并做一些R& D.

我试过'依赖'概念。

<bean id='example1' class='com.freelancing.SpringExample.Example1'
    depends-on="example">
    <!-- <property name="personExample"> <value>sparsh</value> </property> -->
    <property name="age">
        <value>25</value>
    </property>
    <property name="listVariable">
        <list>
            <value>3434</value>
            <value>3432423</value>
            <value>34324324</value>
        </list>
    </property>
    <property name="setVariable">
        <set>
            <value>45</value>
            <value>45</value>
            <value>23432</value>
        </set>
    </property>

</bean>

<bean id='example' class='com.freelancing.SpringExample.Example'>
    <!-- <constructor-arg index='0'> <value>2345</value> </constructor-arg> 
        <constructor-arg index='1'> <value>sparsh</value> </constructor-arg> -->
    <property name="roll">
        <list>
            <value>2</value>
            <value>3</value>
            <value>5</value>
        </list>
    </property>
    <property name="salary">
        <value>12345</value>
    </property>
    <property name='uname'>
        <value>nane</value>
    </property>
    <property name="ex1" ref="example1"></property>
</bean>

现在在这段代码中你可以清楚地看到我有意做了Example1类依赖于Example。但是在Example bean中它需要Example1 obj。这是一种循环依赖。但它没有给我这个错误。

请帮我解释一下。

1 个答案:

答案 0 :(得分:1)

Spring在属性中使用它们时可以解决循环依赖关系。在这种情况下,它可以先创建example(因为example1依赖于它),然后创建一个example1,然后将example1设置为字段&#34; ex1&#34 ; example对象。

当然,如果你在构造函数中需要example1,那么这将无法工作。这就是为什么我个人更喜欢构造函数注入,因为它首先阻止你有循环依赖(它们往往是代码错误的标志)。

因此,通过getter方法注入(或@ Autowired)允许spring解决循环依赖关系,但如果你问我,这不是一件好事,它只是隐藏了一些代码是坏。