我对Spring中的ref和依赖属性感到困惑。我读了spring文档,但我仍然感到困惑。我想知道两者之间的确切区别,在哪种情况下应该使用哪一个。
答案 0 :(得分:11)
取决于 - > 当前bean所依赖的bean。 指定的任何bean都保证在此bean之前由容器创建。 在bean没有通过属性或构造函数参数显式依赖于另一个bean的情况下很少使用,而是依赖于另一个bean初始化的副作用。
在上面提供的答案中,以下陈述是错误的,
“'依赖'属性中定义的从属bean将在相关bean被销毁之前被销毁”
首先销毁主bean,然后销毁依赖bean。
这是我的测试结果,
主要类的破坏被称为。
调用依赖的破坏。
答案 1 :(得分:4)
也许需要依赖的情况的一个例子会有所帮助。我使用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>
答案 2 :(得分:0)
在某些情况下,一个bean可能是另一个bean中的属性,即;在这种情况下,我们使用具有ref
属性的bean来将属性bean作为属性直接包含在bean定义中。
在某些情况下,可能需要成功实例化另一个bean才能成功创建另一个bean,而另一个bean不是所定义bean的属性,在这种情况下,我们使用depends-on
属性。