1. 程式人生 > >Spring之—ApplicationListener 介面及事務管理

Spring之—ApplicationListener 介面及事務管理

想在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,從而實現事務的入口登記,在出事務的時候就可以自動釋放連線了。

相關推薦

SpringApplicationListener 介面事務管理

想在spring啟動時自動呼叫一些db操作作快取,於是在service實現ApplicationListener 介面。 並重寫onApplicationEvent操作。這樣就實現了要求,程式碼如下: @Service @Scope("singleton") publi

Java框架-Spring的jdbc、連線池事務管理

1. Spring的AOP程式設計 1.1 純xml程式設計 <!--通知配置型別--> <aop:config> <!--設定切面--> <aop:aspect ref="logger"> <!-

Spring框架的事務管理程式設計式的事務管理(瞭解)

1. 說明:Spring為了簡化事務管理的程式碼:提供了模板類 TransactionTemplate,所以手動程式設計的方式來管理事務,只需要使用該模板類即可! 2. 手動程式設計方式的具體步驟如下: 1. 步驟一:配置一個事務管理器,Spring使用PlatformT

Spring監聽器ApplicationListener原理原始碼解析例項

一、原理及原始碼解析 事件:ContextRefreshedEvent、IOCTest_Ext$1[source=我釋出的事件]、ContextClosedEvent;  *  1)、ContextRefreshedEvent事件:  *      1)、容器建立物件:re

spring資料來源配置事務管理--entityManager

一、實體管理其必須執行在web(ejb容器)容器,用main方法是不能執行的。 二、配置檔案:applicationContext-em.xml <beans xmlns="http://www.springframework.org/schema/beans"   

Spring JDBC-混合框架的事務管理

組合 manager 延遲 發生 required 應用 conf 一個 研究 ? Spring 抽象的 DAO 體系兼容多種數據訪問技術,它們各有特色,各有千秋。 Hibernate 是非常優秀的 ORM 實現方案,但對底層 SQL 的控制不太方便 M

spring boot配置mybatis和事務管理

生成 很多 -s 順序 south 位置 ron 技術 username spring boot配置mybatis和事務管理 一、spring boot與mybatis的配置 1.首先,spring boot 配置mybatis需要的全部依賴如下: <!-- Spri

Spring整合mybatis時使用事務管理

lang pan lan -s error org 版本 batis java 異常報告:java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTransaction.getTi

Spring 使用註解方式進行事務管理

正在 als 也不會 實現 指定 ati nbsp 負責 spring 事務 事務的傳播行為和隔離級別 大家在使用spring的註解式事務管理時,對事務的傳播行為和隔離級別可能有點不知所措,下邊就詳細的介紹下以備方便查閱。 事物註解方式: @Transactional 當標

Spring+JTA+Atomikos+mybatis分散式事務管理

  背景描述:我們平時的工作中用到的Spring事務管理是管理一個數據源的。但是如果對多個數據源進行事務管理該怎麼辦呢?我們可以用JTA和Atomikos結合Spring來實現一個分散式事務管理的功能。 事務(官方解釋):是由一組sql語句組成的“邏輯處理單元”。 事務具有

JavaWeb註冊實戰資料管理操作

一、總言 暑假做了招新網站,主要就是報名,資料通過表單進入資料庫,然後從前端提取資料庫資訊,並進行相關操作,下面我就具體說說相關實現。 二、實現 一、前端 一開始做的前端採用的是bootstrap框架,主要用柵格系統完成響應式的設計。設計一些js效果,比如滾動監聽改變

SpringBoot基礎教程4-1-1 使用JdbcTemplate操作資料庫事務管理

1 概述 SpringBoot封裝的JdbcTemplate,使用模板模式,去除JDBC繁瑣的重複程式碼,並提供了基於註解的事務管理;下面詳細介紹如何使用JdbcTemplate操作資料和事務管理。 2 新增依賴 <dependency> <groupId>or

MybatisMapper介面Example例項函式使用詳解

宣告:本文章部分內容源自於CSDN博主biandous的部落格文章,在其基礎上進行了部分修正和程式碼修改。 一、Mapper介面方法 方法 功能說明 int countByExample(UserExample example) throws SQLExce

spring與mybatis整合事務控制

一. 簡介 本文將會使用spring整合mybatis, 並新增事務管理, 以此為記, 方便以後查閱。 二. 例子 1. 程式碼結構圖: 2. 建表語句: DROP DATABASE test; CREATE DATABASE test; USE test

多執行緒Callable介面FutureTask原始碼分析

一、Callable和Future 對比Callable和Runnable: Runnable介面: public interface Runnable { public abstract void run(); } Callable介面: public int

Spring 多資料來源 @Transactional 註解事務管理

在 Spring,MyBatis 下兩個資料來源,通過 @Transactional 註解 配置簡單的事務管理 spring-mybatis.xml <!--******************************** data one start *********

四、spring的JDBC模板和事務管理

Spring的JDBC模板 Spring是JavaEE開發的一站式框架,對各種持久化技術都提供了簡單的模板 ORM持久化技術 模板類 JDBC org.springframework.jdbc.core.JdbcTemplate

spring框架(容器框架之一)事務管理

Spring: 容器框架,一站式框架,用於配置bean,並維護bean之間的關係框架,貫穿框架三層。 (本文章屬於個人學習經驗總結,如果有錯誤或描述不當的地方歡迎指出討論) Spring之事務管理: 一、相關概念 1、什麼是事務:事務就是對一系列的資料庫操作(比如插入多條資

Spring 使用註解方式進行事務管理 /==/ Spring分散式事務實現

使用步驟: 步驟一、在spring配置檔案中引入<tx:>名稱空間 <beans xmlns="http://www.springframework.org/schema/beans"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-ins

【java】動態代理+ThreadLocal實現資料來源事務管理

一、前言         小demo只是思想的一個簡單實現,距離用在生產環境還有一定距離,只是五一勞動節放假宅在家用來鍛鍊一下思維,不嚴謹的地方還望見諒。想要看更完整的示例程式碼,請檢視mybatis原始碼,pooled類的實現。 二、難點分析         JDBC資