Spring事務管理—aop:pointcut expression解析
學習AOP,關鍵在於理解AOP的思想,能夠使用AOP。對於AOP眾多的概念,需要理解3個重要的概念是Pointcut、Advice和Advisor。
切入點(Pointcut)
在介紹Pointcut前,有必要先介紹一下Join Point(連線點)的概念。Join Point指的是程式執行中的某個階段點,如某個方法呼叫、異常丟擲等。Pointcut是Join Point的集合,它是程式中需要注入Advice的位置的集合,指明Advice要在什麼樣的條件下才能被觸發。
org.springframework.aop.Pointcut 介面用來指定通知到特定的類和方法,在介面Pointcut中,主要包含兩個介面:ClassFilter和MethodMatcher。
說明:
介面ClassFilter,用來將切入點限定在給定的目標類中。
介面MethodMatcher,用來判斷切入點是否匹配目標類給定的方法。
通知(Advice)
Advice是某個連線點所採用的處理邏輯,也就是向連線點注入的程式碼。
Advisor
Advisor是Pointcut和Advice的配置器,它包括Pointcut和Advice,是將Advice注入程式中Pointcut位置的程式碼。
上面只是粗略地對AOP的3個概念進行一下說明,目的是讓讀者能夠較快地進入到AOP中。
先來看看這個spring的配置檔案的配置:
點選(此處)摺疊或開啟
-
<!-- 事務管理器 -->
-
<bean id="transactionManager"
-
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
-
<property name="sessionFactory" ref="sessionFactory" />
-
</bean>
-
-
<!-- 配置事務的傳播特性 -->
-
<tx:advice id="txAdvice" transaction-manager="transactionManager">
-
<tx:attributes>
-
<tx:method name="get*" propagation="REQUIRED" read-only="true" />
-
<tx:method name="del*" propagation="REQUIRED" />
-
<tx:method name="save*" propagation="REQUIRED" />
-
<tx:method name="update*" propagation="REQUIRED" />
-
</tx:attributes>
-
</tx:advice>
-
-
<!-- 配置事務攔截器攔截哪些類的哪些方法,一般設定成攔截Service -->
-
<aop:config>
-
<aop:pointcut expression="execution(* com.buty.service.*.*(..))"
-
id="allDaoMethod" />
-
<aop:advisor advice-ref="txAdvice" pointcut-ref="allDaoMethod" />
- </aop:config>
表示com.buty.service包下的所有方法為為事務管理。
execution(* com.buty.shtel.account.dao.impl.*.*(..))
這樣寫就可以了,這是com.buty.shtel.account.dao.impl 包下所有類的所有方法。
第一個 * 代表所有的返回值型別;
第二個 * 代表所有的類;
第三個 * 代表類所有方法,最後一個 .. 代表方法的所有引數。
下面給出一些常見切入點表示式的例子:
-
任意公共方法的執行:
execution(public * *(..))
-
任何一個以“set”開始的方法的執行:
execution(* set*(..))
-
AccountService 介面的任意方法的執行:
execution(* com.xyz.service.AccountService.*(..))
-
定義在service包裡的任意方法的執行:
execution(* com.xyz.service.*.*(..))
-
定義在service包或者子包裡的任意類的任意方法的執行:
execution(* com.xyz.service..*.*(..))
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9399028/viewspace-1823332/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Spring事務管理全解析Spring
- Spring-AOP事務Spring
- spring2 Aop與事務、許可權管理Spring
- Spring AOP 日誌攔截器的事務管理Spring
- Spring MVC + Mybatis + Spring Aop宣告式事務管理沒有作用SpringMVCMyBatis
- spring aop expression簡單說明SpringExpress
- 解析Spring Boot中的事務管理機制Spring Boot
- Spring 事務管理Spring
- Spring事務管理Spring
- 關於Spring Aop和事務記錄Spring
- Spring的事務管理(二)宣告式事務管理Spring
- 死磕Spring之AOP篇 - Spring 事務詳解Spring
- Spring 事務原始碼解析Spring原始碼
- Spring系列.事務管理Spring
- Spring系列-事務管理Spring
- Spring的事務管理Spring
- 【spring原始碼學習】spring的事務管理的原始碼解析Spring原始碼
- Spring中的AOP,以及宣告式事務 @Transactional無法攔截事務Spring
- 解決報錯error the @annotation pointcut expression is only supported at Java 5ErrorExpressJava
- Spring事務原理完全解析Spring
- Spring事務管理總結Spring
- Spring 中的事務管理Spring
- spring 事務管理機制Spring
- Spring AOP及事務配置三種模式詳解Spring模式
- Spring AOP 原始碼解析Spring原始碼
- spring aop 切面程式設計控制管理事務Spring程式設計
- Spring的事務管理入門:程式設計式事務管理(TransactionTemplate)Spring程式設計
- 事務管理最佳實踐全面解析
- spring宣告式事務管理配置Spring
- (四)Spring中的事務管理Spring
- spring datasource 配置及事務管理Spring
- Spring(5) -(14) pointcut 語法Spring
- Spring學習筆記 - 第三章 - AOP與Spring事務Spring筆記
- Spring AOP代理執行解析Spring
- Spring事務管理:非常規指南 - marcobehlerSpring
- Spring 程式設計式事務管理Spring程式設計
- 分散式鎖和spring事務管理分散式Spring
- Spring事務管理(詳解+例項)Spring