zoukankan      html  css  js  c++  java
  • 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,从而实现事务的入口登记,在出事务的时候就可以自动释放连接了。

  • 相关阅读:
    js中null " "的区别
    简略的地图API应用
    JSON的一个例子(代码来源于网上)
    浅谈Event Flow、Process、Method及其Applications
    JS中object与constructor的分析
    浅谈for...in与for....of
    浅谈语言的过去与未来
    正则表达式的四个小应用
    BOM详细
    BOM
  • 原文地址:https://www.cnblogs.com/yaobolove/p/5291373.html
Copyright © 2011-2022 走看看