19

我对 Spring 中的 ref 和 depends-on 属性感到困惑。我阅读了 spring 文档但我仍然感到困惑。我想知道两者之间的确切区别以及在哪种情况下应该使用哪一个。

4

3 回答 3

13

来自官方文档:http ://docs.spring.io/spring/docs/3.2.x/javadoc-api/org/springframework/context/annotation/DependsOn.html

当前 bean 所依赖的 bean。任何指定的 bean 都保证由容器在此 bean 之前创建。在 bean 不通过属性或构造函数参数显式依赖另一个 bean 而是依赖于另一个 bean 初始化的副作用的情况下很少使用。

于 2013-11-27T13:52:50.673 回答
5

也许需要依赖的情况的示例会有所帮助。我使用 Spring 来加载和连接我的 bean。这是一个示例 bean 定义:

<bean id="myBean" class="my.package.Class">
    <property name="destination" value="bean:otherBeanId?method=doSomething"/>
</bean>

<bean id="otherBeanId" class="my.package.OtherClass"/>

请注意,属性值是一个字符串,它引用otherBeanId。由于解析此变量的方式,Spring 不会了解依赖关系,因此它可能会破坏otherBeanId然后myBean。这可能会使myBean 暂时处于损坏状态。

我可以使用取决于来解决此问题,如下所示:

<bean id="myBean" class="my.package.Class" depends-on="otherBeanId">
    <property name="destination" value="bean:otherBeanId?method=doSomething"/>
</bean>
于 2014-02-10T16:14:33.560 回答
0

可能存在一个 bean 可能是另一个 bean 的属性的情况,即;属性 bean 作为属性直接参与到 bean 定义中,在这种情况下,我们使用ref属性来引用 bean。

可能存在这样一种情况,即在一个 bean 实例中需要成功创建另一个 bean,而另一个 bean 不是定义下的 bean 的属性,在这种情况下我们使用depends-on属性。

于 2019-09-15T08:19:04.867 回答