我在Spring中的ref和depends-on屬性之間感到困惑。我讀了spring文檔,但我仍然感到困惑。我想知道兩者之間的確切區別,並且在哪種情況下應該使用一個。ref vs依賴於Spring的屬性
13
A
回答
19
如果你需要表達對多個bean的依賴,可以提供bean的名稱列表作爲'取決於-on屬性,用逗號,空格和分號所有的值有效的分隔符,就像這樣:
<bean id="beanOne" class="ExampleBean" depends-on="manager,accountDao">
<property name="manager" ref="manager" />
</bean>
<bean id="manager" class="ManagerBean" />
<bean id="accountDao" class="x.y.jdbc.JdbcAccountDao" />
的「依賴-on屬性和屬性不僅用來指定初始化時的依賴,而且還指定相應的銷燬時的依賴(在單豆的情況下,只有)。在'depends-on'屬性中定義的依賴bean將在相關bean本身被銷燬之前首先銷燬。這因此也允許您控制關閉順序。
另一方面,對於大多數情況來說,一個bean是另一個bean的依賴關係,這一事實表示爲一個bean被設置爲另一個bean的屬性。這通常通過基於XML的配置元數據中的元素來完成。
<bean id="a" class="ClassA"/>
<bean id="b" class="ClassB">
<property name="aref" ref="a" />
</bean>
10
取決於接通 - > 豆在其上當前bean依賴。 指定的任何bean都將保證在此bean之前由容器創建。 在bean沒有明確依賴另一個屬性或構造函數參數的情況下使用,而是取決於另一個bean初始化的副作用。
在提供以下說法錯誤的是上面的回答,
「中定義的依賴豆'取決於-on屬性將被破壞之前首先到相關的bean本身被破壞」
主要的bean將被首先銷燬,然後依賴的bean將被銷燬。
這裏是我的測試結果,
破壞了主類被調用。
消除依賴被稱爲。
3
也許一個需要依賴的情況的例子會有所幫助。我使用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>
相關問題
- 1. 不依賴於UserControl的依賴屬性
- 2. 依賴屬性依賴於另一個
- 3. 依賴於其他屬性的依賴屬性
- 4. 依賴屬性
- 5. 依賴屬性
- 6. Maven依賴關係spring-web vs spring-webmvc
- 7. 在ReactFire中,如何綁定依賴屬性的ref?
- 8. WPF:CLR屬性依賴屬性
- 9. spring - 通過對象屬性表示的不滿意的依賴
- 10. 依賴屬性空
- 11. 依賴屬性WPF
- 12. 屬性依賴於另一個字段
- 13. XML模式 - 依賴於可選屬性
- 14. JavaConfig不依賴於Spring
- 15. 綁定依賴屬性到另一個依賴屬性
- 16. 基於已通知的POCO屬性的依賴項屬性
- 17. app.xaml.cs中的依賴屬性
- 18. 簡單的依賴屬性?
- 19. Silverlight中的依賴屬性
- 20. ASP.NET的依賴屬性?
- 21. Silverlight中的依賴屬性
- 22. Ember.js計算屬性依賴於數組屬性的元素
- 23. 測試依賴於另一個屬性的驗證屬性
- 24. 初始化與依賴於其他屬性的屬性對象
- 25. 如何使DataSourceCriteria依賴於XAF中的屬性?
- 26. Spring + JMS + ActiveMQ不依賴於ActiveMQ
- 27. 屬性更改依賴屬性
- 28. 註冊屬性作爲依賴屬性
- 29. XSD允許屬性只依賴於其他屬性值
- 30. asp.net自定義控件屬性依賴於另一個屬性
這是很好的解釋:) – Krishna
@Anshu如果我不知道是什麼豆ID,但全名? – verystrongjoe
這對於使bean等待bean B構建非常有用,即使B不是A的屬性。我在測試中需要網絡代理在客戶端之前被初始化,儘管客戶端一無所知代理。 – Wheezil