1、3w是什么?
■ what、where、when 或者 what、when、where
2、what、where、when【通用】
(1)what:增強(qiáng)器-bean【配置一個(gè)bean對(duì)象】
(2)where:被增強(qiáng)的連接點(diǎn)-aop:pointcut【配置被增強(qiáng)的方法的屬性-expression】
(3)when: 被增強(qiáng)的時(shí)機(jī)-aop:before/after-returning/after-throwing/after/around【前置、后置、異常、最終、環(huán)繞】
★ 3w 之間的關(guān)聯(lián):
■ where 和 when 同處在 元素aop:aspect 內(nèi)部:
【where、when】整體-關(guān)聯(lián) what 是通過(guò) 元素aop:aspect 的屬性 ref 關(guān)聯(lián)是bean的增強(qiáng)器(what)
■ 內(nèi)部的 when 和 where 之間:when 通過(guò) pointcut-ref 關(guān)聯(lián)到 where
<!-- AOP 配置:what、where、when -->
<!-- 1、what:做什么增強(qiáng) -->
<bean id="transactionManager" class="com.shan.tx.TransactionManager"/>
<aop:config>
<!-- 配置AOP切面 -->
<aop:aspect ref="transactionManager"> <!-- ? 關(guān)聯(lián)what -->
<!-- 2、where:在哪些包中的哪些類中的哪些方法上做增強(qiáng) -->
<aop:pointcut id="txPoint" expression="execution(* com.shan.service..*Service*.*(..))"/>
<!-- 3、when:在方法執(zhí)行的什么時(shí)機(jī)做增強(qiáng) -->
<aop:before method="open" pointcut-ref="txPoint"/> <!-- ? 關(guān)聯(lián)where -->
</aop:aspect>
</aop:config>
3、what、when、where【事務(wù)管理器特有】
(1)what:增強(qiáng)器-bean【配置一個(gè)bean對(duì)象】
(2)when: 被增強(qiáng)的時(shí)機(jī)(事務(wù)環(huán)繞增強(qiáng)特有)-tx:advice
(3)where:被增強(qiáng)的連接點(diǎn)-aop:pointcut【配置被增強(qiáng)的方法的屬性-expression】
★ 3w 之間的關(guān)聯(lián):
■ when 和 what 之間:when 通過(guò) (事務(wù)環(huán)繞增強(qiáng)特有)-tx:advice的屬性 transaction-manager 關(guān)聯(lián)是bean的增強(qiáng)器(what)
■ where 和 when 同處在 元素aop:config 內(nèi)部:
通過(guò)元素aop:config的子元素aop:pointcut關(guān)聯(lián)到where,然后又通過(guò)元素aop:config的子元素aop:advisor關(guān)聯(lián)到when
<!-- 1、what:配置jdbc事務(wù)管理器 -->
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<!-- 2:when:配置事務(wù)管理器增強(qiáng)(環(huán)繞增強(qiáng)) --><!-- ? 關(guān)聯(lián)what -->
<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="trans"/>
</tx:attributes>
</tx:advice>
<!-- 3、where:配置切面 -->
<aop:config>
<aop:pointcut id="txPc" expression="execution(* com.shan.service.*Service.*(..))" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="txPc"/><!-- ? 關(guān)聯(lián)when -->
</aop:config>
本文摘自 :https://www.cnblogs.com/