2016-12-06 121 views
0

我正在使用Spring應用程序事件向其他bean發送信息。有一個bean A只要A被初始化就發佈一個事件。還有就是偵聽由A.在春天缺少事件

取決於是其他豆類中的初始化時發送的事件豆B,B被初始化到晚了,錯過由A.

如何發送事件它是否打算在春季避開這些問題?除了更改bean初始化順序之外,還有其他什麼方法嗎?

+0

檢查這個話題: http://stackoverflow.com/questions/13770225/spring-3-bean-instantiation-sequence – nowszy94

回答

1

一個可能的方法是使用

取決於上

attribute.You可以定義你正在使用

xml配置的情況下,依賴關係:

<bean id="A" depends-on="B"/> 

註釋:

@DependsOn("B") 
public class A {} 

這迫使彈簧並初始化B A之前,這樣就不會錯過由A.

+0

不是XML,你可以(也應該)使用相應的[註釋](HTTP:// docs.spring.io/spring/docs/current/javadoc-api/org/springframework/context/annotation/DependsOn.html)。 –

+0

我相信你已經提到了基於註釋的鏈接而不是xml ..它並沒有打開,雖然plz驗證。 OP沒有提到他是基於XML還是Annotation。 – mhasan

+0

是的,我爲了完整性而鏈接了相應的註釋,所以OP可以選擇其中之一。 –

0

公佈的事件您可以在豆類創建init()方法,然後在你的main功能作出init()方法的調用每個豆的。您可以按照自己喜歡的方式訂購電話,特別是在B之前致電A的init()。 然後你必須把A豆的事件發佈到A的init()方法中。