当前位置: 首页 > 面试题库 >

事件监听器在Spring 3.1.0.release中使用Hibernate 4.0?

潘修文
2023-03-14
问题内容

这些jar都是新发布的,并且具有针对Java EE应用程序的最新解决方案。但是我在hibernate.cfg.xml中指定休眠监听器时遇到问题。

在春季3.1.0之前,LocalSessionFactroyBean它拥有一个保留事件监听器的属性。但是对于3.1.0.release,没有事件监听器映射。现在,我无法在saveorupdate,postload等上跟踪模态对象,因为它们不是由Spring配置的。您有解决此问题的想法吗?


问题答案:

我遇到了同样令人沮丧的问题。Hibernate
4似乎从根本上改变了您注册事件的方式,而Spring组尚未赶上。这是我的基于注释的解决方案,使用init方法注册侦听器:

@Component
public class HibernateEventWiring {

    @Autowired
    private SessionFactory sessionFactory;

    @Autowired
    private SomeHibernateListener listener;

    @PostConstruct
    public void registerListeners() {
        EventListenerRegistry registry = ((SessionFactoryImpl) sessionFactory).getServiceRegistry().getService(
        EventListenerRegistry.class);
        registry.getEventListenerGroup(EventType.POST_COMMIT_INSERT).appendListener(listener);
        registry.getEventListenerGroup(EventType.POST_COMMIT_UPDATE).appendListener(listener);
    }
}

拦截器是另一种很好的方法,但是错误地放弃了对拦截器的支持:https
:
//jira.springsource.org/browse/SPR-8940



 类似资料:
  • 应用事件监听器是实现一个或多个 Servlet 事件监听器接口的类。它们是在部署 Web 应用时,实例化并注册到 Web 容器中。它们由开发人员在WAR 包中提供。 Servlet 事件监听器支持在 ServletContext、HttpSession 和ServletRequest 状态改变时进行事件通知。Servlet 上下文监听器是用来管理应用的资源或 JVM 级别持有的状态。HTTP 会话

  • 我正在使用Hibernate 5和Spring 4.2。3.我找不到将eventListener添加到SessionFactory范围的方法。我只需要在hibernate持久化对象之前设置一个日期。我在Spring定义了sessionFactory。xml 我有我的GenericDAOImpl在哪里得到这个会话工厂: 我已经看到了几种方法,但其中一些方法不适用于Hibernate 5(如)。我找不

  • 主要内容:什么是AWT事件监听器,AWT EventListner 接口声明,常用的AWT事件监听器什么是AWT事件监听器 AWT事件侦听器代表负责处理事件的接口。Java 为我们提供了各种事件侦听器类,但我们将讨论更常用的那些。事件侦听器方法的每个方法都有一个作为对象的参数,该对象是 EventObject 类的子类。例如,鼠标事件侦听器方法将接受 MouseEvent 的实例,其中 MouseEvent 派生自 EventObject。 AWT EventListner 接口声明 Event

  • Blade 中提供一个方法帮助开发者可以自定义的监听应用程序运行中的一些生命周期。比如 Session 的创建与销毁,应用启动结束后等。 支持的事件类型有如下: public enum EventType { SERVER_STARTING, // 服务准备启动 SERVER_STARTED, // 服务启动成功 SERVER_STOPPING, //

  • Nutz.Ioc 容器有三种事件: 对象被创建(create事件) 对象被从容器中取出(fetch事件) 对象被销毁(depose事件) 在这三种时刻,你如果想做一些特殊的操作,比如,当一个数据源被销毁时,你希望能够关闭所有的连接, 声明一下,你想监听什么事件,以及怎么监听。 注: 如果你的对象是 "singleton: false",那么容器创建了对象后就会立即忘记它的存在。因为鬼才知道 你打算

  • 全局事件 事件监听 注解监听 以imi/src/Listener/Init.php为例 <?php namespace Imi\Listener; use Imi\Event\EventParam; use Imi\Event\IEventListener; use Imi\Bean\Annotation\Listener; /** * @Listener(eventName="IMI.IN