Spring AOP 基本方式(Advice方式)

1、通知 Advice

1)根据对方法进行拦截的时机,分为四种:

Before Advice:方法执行之前进行拦截 

AfterReturning Advice:方法正常执行结束之后进行拦截

AfterThrowing Advice:方法异常结束之后进行拦截

Around Advice:环绕通知

2)注意:

AroundAdvice应单独使用,不和其他的三种混合

AroundAdvice中要手动调用目标方法:methodInvocation.proceed()

2、用ProxyFactoryBean来创建代理对象

拦截器Advice

创建Proxy

<bean id=”proxy” class=”org.springframework.ProxyFactoryBean”>

<property name=”target” ref=”targetBean” />

<property nam=”interceptorNames”>

<list>

<value>adviceBean</value>

......

</list>

</property>

</bean>

3、Spring AOP advice方式与AOP方式对比

Spring对基本AOP方式进行了封装,把原来的拦截器改造成能够按时间分来进行拦截的Advice通知方式,平且提供了创建Proxy代理对象的ProxyFactoryBean,只需要ProxyFactoryBean同时传递target目标对象属性、和interceptorNamesadvice集合属性即可。

4、主要实现代码

1)Advice实现

Before Advice

implements MethodBeforeAdvice {

before(Method method, Object[] args, Object target){

//拦截逻辑

log.info(“this is before advice”);

......

}

}

AfterReturning Advice

implements AfterReturningAdvice {

afterReturning(Object result, Method method, Object[] args, Object target) {

//拦截逻辑

log.info(“this is afterReturning advice”);

......

}

}

AfterThrowing Advice

Implements ThrowsAdvice {

afterThrowing(Exception e) {

//拦截逻辑

log.info(“this is afterThrowing advice”);

......

}

Around Advice

Implements MethodInterceptor {

invoke(MethodInvocation methodInvocation) {

//拦截逻辑

......

Object result = methodInvocation.proceed();

......

return result;

}

}

可以以spring配置文件或者注解方式声明adviceBean

2)Proxy实现

<bean id=”proxy” class=”org.springframework.ProxyFactoryBean”>

<property name=”target” ref=”targetBean” />

<property nam=”interceptorNames”>

<list>

<value>adviceBean</value>

......

</list>

</property>

</bean>

3)注意:

spring3中,spring aop advice 依赖于 aopalliance-1.0.jar 包,不引用这个jar包,Acvice类就不能实现相应接口

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值