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

  • 相关阅读:
    JMeter的JavaRequest探究
    记一次生产压测遇到的"坑"
    JMeter之If Controller深究二
    JMeter之SteppingShape
    那些年拿过的shell之adminer
    Spring Boot Actuator H2 RCE复现
    使用sqlmap结合dnslog快速注入
    一次稍显曲折的爆破经历
    无回显、不出网命令执行测试方式
    实战绕过某waf后缀检测内容检测
  • 原文地址:https://www.cnblogs.com/yaobolove/p/5291373.html
Copyright © 2011-2022 走看看