• Spring中实现监听的方法


      在未使用框架进行编程的时候,我们常常在web.xml中加上这样一段话 

    <listener>
            <listener-class>XXX</listener-class>
      </listener>

      在对应的类中实现ServletContextListener接口,这样在服务器已启动的时候,就会加载相应的程序

      但是现在在spring为我们提供了它特有的方法

      

    在spring启动时自动调用一些db操作作缓存,于是在service实现ApplicationListener 接口

    并重写onApplicationEvent操作。这样就实现了要求,代码如下:

    @Service
    @Scope("singleton")
    public class MasterServiceImpl implements ApplicationListener {
        public void onApplicationEvent(ApplicationEvent arg0) {
            一些DB操作
        }
    }
     由于我们是spring托管事务,并且采用注入方式调用。

      这样的写法带来了一些问题,正常的action注入service调用的时候再事务范围内,出事务的时候会对DB连接进行释放,

      因为是这个service是系统启动直接调用的这些方法,不在事务管理范围内,于是这些DB的操作没有进行DB连接释放(关闭)。

      解决办法是,写一个专门的action实现ApplicationListener 接口,在这个action重新的onApplicationEvent方法内,

      调用该单例service,从而实现事务的入口登记,在出事务的时候就可以自动释放连接了。

  • 相关阅读:
    webpack2.x抽取css
    window.print控制打印样式
    Vue2.x中的父子组件相互通信
    Vue2.x中的父组件数据传递至子组件
    NodeJs之fs的读写删移监
    设计
    mycat服务启动{管理模块启动过程}
    mycat初探
    zookeeper总结
    rocketmq总结
  • 原文地址:https://www.cnblogs.com/yaobolove/p/5291373.html
Copyright © 2020-2023  润新知