0
我希望在運行時向會話或會話工廠添加攔截器。 我設法做這樣的事情與事件處理程序:運行時向會話工廠添加Hibernate攔截器
@Component
public class HibernateEventListenersRegisterer {
/** The post load event listener. */
@Resource
private GenericPostLoadEventListener postLoadEventListener;
/** The session factory. */
@Resource
private SessionFactory sessionFactory;
/**
* Register all event listeners.
*/
@PostConstruct
public void registerEventListeners() {
EventListenerRegistry registry = ((SessionFactoryImpl) sessionFactory).getServiceRegistry()
.getService(EventListenerRegistry.class);
registry.getEventListenerGroup(EventType.POST_LOAD).appendListener(postLoadEventListener);
}
}
我想用一個攔截器以同樣的方式......可以嗎?
在我的問題中,我用事件偵聽器發佈的代碼運行良好。問題是我現在需要一個攔截器。我不明白你如何建議激活攔截器。 – 2013-05-02 12:08:38
定義您的自定義攔截器,通過「靜態單例」(最簡單)或者某種類型的註冊表訪問它,然後您可以控制它;可以通過開啓/關閉或添加/刪除代理攔截器。 – 2013-05-03 01:00:30
有沒有辦法通過Hibernate配置傳遞對象引用,所以要麼是靜態引用 - MyInterceptor.getInstance(),要麼你的攔截器可以註冊,並且可以從JNDI或任何其他註冊表中找到工作。 – 2013-05-03 01:02:33