[英]Difference between spring tx:advice and spring aop pointcut
我是新來的春天,具有冬眠的工作知識。 我的工作是通過使用Spring聲明式方法來實現交易。由於Google的幫助,我成功地在Google的幫助下完成了交易。 但是無法清楚地了解我在application-context.xml中使用的術語。
1。
<tx-advice>
</tx-advice>
<aop-config> // here is point cut were declared </aop-config>
有人可以向我解釋以上幾點,與此同時,我也試圖從google上了解它。
由於您已經成功實施了spring transaction
,
在Spring
我們可以通過三種方式實現事務:
您實現的被稱為通過XML的聲明式事務管理 。
簡而言之,您通過Spring的AOP功能實現了transaction
的實現。
將tx:advice XML
配置與基於XML的AOP配置耦合在一起可以實現協同組合。 例如,我們可以使用方法名稱來自動確定我們要對該方法應用哪種事務。
說 ,我們要在其上用啟動所有方法應用事務save
和modify
,如savePizza()
saveColdDrink()
modifyOrder()
modifyBill()
對於這些,我們必須在xml文件中定義advice
:
<tx:advice id="txAdvice" >
<tx:attributes>
<tx:method name="save*" propagation="REQUIRED"/>
<tx:method name="modify*" propagation="REQUIRED"/>
</tx:attributes>
</tx:advice>
正如我們在上面一行中所說的那樣,我們的建議已經准備就緒,我們只希望以save
或modify
開頭的方法進行事務處理。 現在,我們要通過使用aop-config
pointcut
元素來說明哪些bean需要上述建議。 例如,假設我們要將事務建議應用於com.mytransaction.service
包中可用的所有類。
為此,我們必須在xml文件中添加以下行:
<aop:config>
<aop:pointcut id="allServices"
expression="execution(*com.mytransaction.service.*.*(..))"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="allServices"/>
</aop:config>
簡而言之, <tx:advice>
表示要執行的操作或我們想要應用的交易行為。 <aop-config>
pointcut
元素表示要在其中應用事務的位置,例如<aop:advisor advice-ref="txAdvice" pointcut-ref="allServices"/>
<tx:advice>
標記特定於事務管理配置,而<aop:config>
標記通常可用於進行面向方面的編程 。
AOP可以用於事務之外的其他用途,例如日志記錄或訪問控制。 而且,不一定必須使用AOP來實現事務管理,這只是通常在Spring中完成的方式(但是Spring也支持Programmatic Transaction Management )。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.