2016-07-26 81 views
2

我正在玩新的休眠5 Bootstrap API,很高興看到如何輕鬆(與以前/遺留API相比)可以組裝SessionFactory和家庭。休眠與Guice 5實體監聽器

現在,我想提供我自己的ListenerFactory,它基本上將實體監聽器的創建和依賴注入委託給Guice。

我無法找到如何從SessionFactoryBuilder做到這一點,除了applyBeanManager:

sessionFactoryBuilder.applyBeanManager(new ListenerFactory() { 
    @Override 
    public void release() { 
    } 

    @Override 
    public <T> Listener<T> buildListener(final Class<T> listenerClass) { 
    return() -> injector.getInstance(listenerClass); 
    } 
}); 

不幸的是,這並沒有BC休眠工作預計ListenerFactory爲空(和使用默認ListenerFactory),或者是BeanManager實例。

想知道是否有另一種方式提供我自己的ListenerFactory?

謝謝。

回答

1

這是因爲BeanManager是爲CDI設計的。如果你想在CDI之外定製它,你需要打開描述你的用例和你想做什麼的JIRA問題。

另外,如果你想依賴注入你的實體(我覺得這真的很奇怪,因爲它打破了層封裝),你可以只使用LoadEventListener自定義實體的創建方式:

sessionFactory 
.getServiceRegistry() 
.getService(EventListenerRegistry.class) 
.prependListeners(EventType.LOAD, new MyGuiceEntityListener()); 
+0

謝謝會引發JIRA問題。 –