我創建了Vaadin應用程序,並基於QuickTickets演示應用程序和其他示例,我決定使用Guava的EventBus
進行事件處理,所以我保留在UI
實例級別參考它。在Vaadin處理不可序列化的Guava EventBus與會話序列化
由於我也使用Spring引導與DevTools,這可以在不需要冷啓動加載的應用程序,我發現番石榴的EventBus
不Serializable
,導致java.io.NotSerializableException
。
這怎麼可以避免?
例如:
- 有沒有一種方法,使周圍
EventBus
一個Serializable
包裝?它需要保留一個已註冊的事件偵聽器列表,並在會話重新加載時重新註冊到EventBus
(我想它需要transient
對EventBus
的引用,所以它不會被序列化)。 - 因爲我使用的是彈簧,也許我可以使
EventBus
的用戶界面範圍爲Bean
?我想我仍然需要以某種方式處理聽衆重新註冊。
我需要如果我使用該庫,使用AspectJ?另外,如何重新註冊'EventBus'用戶呢? – herman
@herman不,你不需要AspectJ,它是一個春天的aop庫。請在問題中發佈實際的bean聲明。有幾種方法可以做到這一點。 –