aop:Aspect与aop:Advisor

aop:Aspect

<bean id="aspect" class="cn.javass.spring.chapter6.aop.HelloWorldAspect"/>  
<aop:config>  
    <aop:pointcut id="pointcut" expression="execution(* cn.javass..*.*(..))"/>  
    <aop:aspect ref="aspect">  
        <aop:before pointcut-ref="pointcut" method="beforeAdvice"/>  
        <aop:after pointcut="execution(* cn.javass..*.*(..))" method="afterFinallyAdvice"/>  
    </aop:aspect>  
</aop:config>  

aop:Advisor

Advisor表示只有一个通知和一个切入点的切面,由于Spring AOP都是基于AOP联盟的拦截器模型的环绕通知的,所以引入Advisor来支持各种通知类型(如前置通知等5种),Advisor概念来自于Spring1.2对AOP的支持,在AspectJ中没有相应的概念对应。 
Advisor可以使用标签下的标签定义:

<aop:advisor pointcut="切入点表达式" pointcut-ref="切入点Bean引用"  
                     advice-ref="通知API实现引用"/> 

pointcut和pointcut-ref:二者选一,指定切入点表达式; 
advice-ref:引用通知API实现Bean,如前置通知接口为MethodBeforeAdvice;

package cn.javass.spring.chapter6.aop;  
import java.lang.reflect.Method;  
import org.springframework.aop.MethodBeforeAdvice;  
public class BeforeAdviceImpl implements MethodBeforeAdvice {  
    @Override  
    public void before(Method method, Object[] args, Object target) throws Throwable {  
        System.out.println("===========before advice");  
    }  
}  
<bean id="beforeAdvice" class="cn.javass.spring.chapter6.aop.BeforeAdviceImpl"/>  
<aop:advisor pointcut="execution(* cn.javass..*.sayAdvisorBefore(..))"  
                     advice-ref="beforeAdvice"/>  

事务配置

<aop:config proxy-target-class="true">
        <aop:advisor advice-ref="txAdvice" 
        pointcut="execution(* com.ksource.platform.service..*.*(..))
                ||execution(* com.ksource.dss.service..*.*(..))
                ||execution(* com.ksource..service..*.*(..))"
  />
</aop:config>
<tx:advice id="txAdvice" transaction-manager="transactionManager">
    <tx:attributes>
        <tx:method name="get*" read-only="true"/>
        <tx:method name="is*" read-only="true"/>
        <tx:method name="find*" read-only="true"/>
        <tx:method name="*" isolation="DEFAULT"/>
    </tx:attributes>
</tx:advice>   
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource" />
</bean>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值