在未使用框架进行编程的时候,我们常常在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,从而实现事务的入口登记,在出事务的时候就可以自动释放连接了。

Spring中实现监听的方法的更多相关文章

  1. spring中配置监听队列的MQ

    一.spring中配置监听队列的MQ相关信息注:${}是读取propertites文件的常量,这里忽略.绿色部分配置在接收和发送端都要配置.  <bean id="axx" ...

  2. Spring之事件监听(观察者模型)

    目录 Spring事件监听 一.事件监听案例 1.事件类 2.事件监听类 3.事件发布者 4.配置文件中注册 5.测试 二.Spring中事件监听分析 1. Spring中事件监听的结构 2. 核心角 ...

  3. Android 关于ListView中按钮监听的优化问题(方法二)

    关于ListView中按钮监听的优化问题(方法一)地址: http://www.cnblogs.com/steffen/p/3951901.html 之前的方法一,虽然能够解决position的传递, ...

  4. Android中添加监听回调接口的方法

    在Android中,我们经常会添加一些监听回调的接口供别的类来回调,比如自定义一个PopupWindow,需要让new这个PopupWindow的Activity来监听PopupWindow中的一些组 ...

  5. onscroll事件没有响应的原因以及vue.js中添加onscroll事件监听的方法

    1 onscroll事件失效 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...

  6. 利用spring的ApplicationListener监听某一类事件的发生

    1.ApplicationListener在使用过程中可以监听某一事件的发生,可以做出相应的处理,这个方式不常用,但是在特殊情况下面还是有用的. 2.导包pom.xml <project xml ...

  7. Spring的事件监听机制

    最近公司在重构广告系统,其中核心的打包功能由广告系统调用,即对apk打包的调用和打包完成之后的回调,需要提供相应的接口给广告系统.因此,为了将apk打包的核心流程和对接广告系统的业务解耦,利用了spr ...

  8. 十一、Spring之事件监听

    Spring之事件监听 ApplicationListener ApplicationListener是Spring事件机制的一部分,与抽象类ApplicationEvent类配合来完成Applica ...

  9. 新建Oracle数据库时,提示使用database control配置数据库时,要求在当前oracle主目录中配置监听程序

    新建一个oracle数据库时,当提示使用database control配置数据库时,要求在当前oracle主目录中配置监听程序等字样的时候,问题是那个监听的服务没有启动,解决方法如下: 打开cmd命 ...

随机推荐

  1. 《JS权威指南学习总结--7.10 数组类型》

    内容要点: 一.数组类型 判断它是否为数组通常非常有用.在ES5中,可以使用Array.isArray()函数来做这件事情: Array.isArray([]); //=>true Array. ...

  2. ManyToMany OrderBy

    有A.B表和A_B中间表,A_B中间表只有A.B表的id,想让A中的bs以date列排序: @Entity @Table(name="A") public class A impl ...

  3. POJ 2348 Euclid's Game(简单博弈)

    这道题没说a b最大多少,所以要声明为long long型,不然会WA! 道理很简单,(默认a>=b)a和b只有以下三种关系: 1.a%b==0 :这种关系下,可能是a/b为整数,也可能是a和b ...

  4. 2DToolkit官方文档中文版打地鼠教程

    初始设置 创建一个Unity项目,并导入2D Toolkit插件. 导入完成后,在Project窗口会显示TK2DROOT文件夹(后续版本文件夹名称或许会有变动). 导入素材游戏,你可以从这里下载.下 ...

  5. soj 2543 完全二叉树

    1000. 完全二叉树     Total: 338 Accepted: 81                 Time Limit: 1sec    Memory Limit:256MB Descr ...

  6. gcc 编译

    ../gcc-5.2.0/configure --enable-threads=posix --disable-checking --disable-multilib --enable-languag ...

  7. PHP中使用CURL(一)

    执行流程: curl_init()初始化 -> curl_setopt()设置变量 -> curl_exec()获取结果 -> curl_close()释放句柄 Get: $ch = ...

  8. markdown 自己搞一个浏览工具

    注意!`下不能有空行 `上也不能有空行 问题未解决 <!DOCTYPE html> <html lang="en"> <head> <me ...

  9. a标签中使用img后的高度多了几个像素

    a元素下有一个匿名文本,这个文本外有一个匿名行级盒子,它有的默认vertical-align是baseline的,而且往往因为上文line-height的影响,使它有个line-height,从而使其 ...

  10. 8.17HTML 标签

    1.HTML body属性: bgbgcolor      页面背景色 text              文字颜色 topmargin     上页面边距 leftmargin      左 rig ...