1. 程式人生 > >Spring 事物 expression="execution(*service..*.*(..))"

Spring 事物 expression="execution(*service..*.*(..))"

(* com.evan.crm.service.*.*(..))中幾個萬用字元的含義: 


|第一個 * —— 通配 隨便率性返回值型別| 
|第二個 * —— 通配包com.evan.crm.service下的隨便率性class| 
|第三個 * —— 通配包com.evan.crm.service下的隨便率性class的隨便率性辦法| 
|第四個 .. —— 通配 辦法可以有0個或多個引數| 

<!-- 配置那些類的方法進行事務管理 --> 
<aop:config> 
<aop:pointcut id="allServiceMethod" expression="execution (* com.cms.sys.service.*.*(..))" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="allServiceMethod" /> 
</aop:config> 

還有一個 
execution (* com.cms.art.service.*.*(..))" 

要怎麼寫?

可以這樣寫:將execution分開寫。 
<aop:config> 
<aop:pointcut id="allServiceMethod" expression="(execution (* com.cms.sys.service.*.*(..)))or (execution (* com.cms.art.service.*.*(..)))" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="allServiceMethod" /> 
</aop:config> 


例如:

<!-- Hibernate 事務控制配置 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
<property name="nestedTransactionAllowed" value="true" />
</bean>
<!-- 使用Hibernate的事務控制器管理事務 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="save*" rollback-for="Exception" propagation="REQUIRED" />
<tx:method name="update*" rollback-for="Exception" propagation="REQUIRED" />
<tx:method name="del*" rollback-for="Exception" propagation="REQUIRED" />
<tx:method name="remove*" rollback-for="Exception" propagation="REQUIRED" />
<tx:method name="add*" rollback-for="Exception" propagation="REQUIRED" />
<tx:method name="insert*" rollback-for="Exception" propagation="REQUIRED" />
<tx:method name="auth*" rollback-for="Exception" propagation="REQUIRED" />
<tx:method name="*" rollback-for="Exception" propagation="REQUIRED" />
</tx:attributes>
</tx:advice>
<!-- 使用對實體類的事務控制 -->
<aop:config proxy-target-class="true">
<aop:advisor pointcut="execution(* com.rf..*.*Service.*(..))" advice-ref="txAdvice" />
<aop:advisor pointcut="execution(* com..*.*Service.*(..))" advice-ref="txAdvice" />
</aop:config>

相關推薦

Spring 事物 expression="execution(*service..*.*(..))"

(* com.evan.crm.service.*.*(..))中幾個萬用字元的含義:  |第一個 * —— 通配 隨便率性返回值型別|  |第二個 * —— 通配包com.evan.crm.service下的隨便率性class|  |第三個 * —— 通配包com.ev

expression="execution(*service..*.*(..))"

(* com.evan.crm.service.*.*(..))中幾個萬用字元的含義:  |第一個 * —— 通配 隨便率性返回值型別|  |第二個 * —— 通配包com.evan.crm.service下的隨便率性class|  |第三個 * —— 通配包com.eva

spring在多個service中的方法不在同一個事物

問題:1、spring重啟在啟動階段初始化兩次 第一次通過web.xml配置以XmlWebApplicationContext為入口 第二次通過ClassPathXmlApplicationContext為入口

Spring 事物管理

不可重復讀 isolation iso 事務回滾 速度 nested 整合 缺陷 支持 Spring在企業開發中,能和其他框架進行整合,Spring的職責在於Bean管理和事物操作 Spring配置文件中關於事務配置總是由三個組成部分,分別是DataSource、Trans

Spring註入靜態service

bsp his spring () static control public pub pri @Component@Controller public class Demo { @Resource(name="userService") private UserSer

Spring(十一)Spring事物

一個 簡單介紹 數據 數據庫操作 nag 原子性 pre spring pointcut 事務是訪問數據庫的一個操作序列,DB應用系統通過事務集來完成對數據的存取。 事務必須遵循4個原則,即常說的 ACID A,Automicity,原子性,即事務要麽被全部執行

spring-事物管理

1.程式設計式事務 這種需要自己手動編寫事務程式碼的控制方式已經嚴重過時了,因為每個執行DML語句的操作都要編寫一份這樣的程式碼,相當的麻煩,Spring提供了一個抽象層:PlantformTransactionManager,事務管理器。封裝了資料庫事務幾個方法, commit、roll

spring aop Pointcut execution規則

任意公共方法的執行: execution(public * *(..)) ##public可以省略, 第一個* 代表方法的任意返回值 第二個引數代表任意包+類+方法 (..)任意引數 任何一個以“set”開始的方法的執行: execution(* set*(..)) UserService介面的

spring 事物之一----基本概論

Spring 事物基本概念 什麼是事物 事務特性(ACID) 事物隔離級別 事務的傳播行為 事務的管理方式 @Transactional註解 什麼是事物    

spring事物(2)-----手寫spring註解事務&&事務傳播行為

一,spring事務的註解 1.1,spring自帶的@Transactional例子   package com.qingruihappy1.dao; import org.springframework.beans.factory.annotation.Autowired; imp

Spring事物失效、無效問題

專案原來的ORM是Hibernate,要改造成MyBatis,相關配置後啟動成功,沒有報錯。 資料庫是MySql5.7 表的儲存引擎是:InnoDB 但是在測試事物有效性的時候,發現不回滾!! @Override public void saveUser(UserVO vo)

Spring Aspect的Execution表示式

使用spring框架配置AOP的時候,不管是通過XML配置檔案還是註解的方式都需要定義pointcut"切入點" 例如定義切入點表示式  execution (* com.sample.service.impl..*.*(..)) execution()是最常用的切點函式

spring事物配置,宣告式事務管理和基於@Transactional註解的使用

spring支援程式設計式事務管理和宣告式事務管理兩種方式。         程式設計式事務管理使用TransactionTemplate或者直接使用底層的PlatformTransactionManager。對於程式設計式事務管理,spring推薦使用Transactio

Spring @Qualifier 註解,一個service 介面,有多個實現時,如何在controller 只引入service 介面,進而實現引入具體bean

參考: https://blog.csdn.net/mazuyu408/article/details/79629846 @Qualifier 作用 在只引入service 介面的情況下在,指示spring 引入value 為那個別名的具體service 實現類 場景: 假設有一個場

spring aop @Pointcut execution離奇事件

在程式碼中下面兩行都不起作用 @Pointcut("execution (* *.Controller.*(..))") @Pointcut("execution (* *.Controller.testPost(..))") 但全路徑卻能用 @Pointcut("e

Spring中的註解@Service @Component @Controller @Repository區別

@Service用於標註業務層元件,  在 serviceImpl 上註解 @Controller用於標註控制層元件(如struts中的action),  在handler/ mycontroler上註解 @Repository用於標註資料訪問元件,即DAO元件,  在d

spring事物篇提交控制

一、MySQL資料庫事務自動提交     對於mysql資料庫,預設情況下,資料庫處於自動提交模式。每一條語句處於一個單獨的事務中,在這條語句執行完畢時,如果執行成功則隱式的提交事務,如果執行失敗則隱式的回滾事務。對於正常的事務管理,是一組相關的操作處於一個事務之中

Spring事物配置檔案

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springfram

spring事物--04原始碼分析-事務處理攔截器的實現分析

事務處理攔截器的實現分析 通過上面的分析,很明確spring在事務方面aop是怎麼玩的了。那麼真正要處理事務是ProxyFactory.getObject() 方法返回的代理物件,通過呼叫代理物件的方法時,攔截器有一個invoker() 方法會被回撥(aop的玩法)。

基於AOP的Spring事物的實現

Spring事物的實現方式主要分兩種, 一:程式設計式事物,這種實現方式硬編碼的形式來實現的,spring框架本身不推薦這種方式,除非逼不得已才用這種事物 ; 二:宣告式事物,這是spring推薦的事物實現方式,基於宣告式的事物,又分為了兩種,         A:基於