springAOP-基础

1 spring切面可以应用5种类型的通知
1)前置通知(Before):在目标方法被调用之前调用通知功能
2)后置通知(After):在目标方法完成之后调用通知,此时不会关心方法的输出是什么
3)返回通知(After-returning):在目标方法执行成功之后调用通知
4)异常通知(After-throwing):在目标抛出异常之后调用通知
5)环绕通知(Around):通知包裹了被通知的方法,在被通知的方法调用之前和调用之后执行自定义的行为

2 spring支持的aop类型
1)基于代理的经典SpringAOP
2)纯POJO切面
3)@AspectJ注解驱动的切面
4)注入式AspectJ切面

3 spring只支持方法级别的连接点,AspectJ和JBoss不仅支持方法级别的切点,同时也支持字段和构造器级别的切点

4 通过切点来选择连接点,springaop支持的AspectJ切点指示器,如下:

---------------------------------------------------------------------------------------------------------------------
AspectJ指示器          描述
arg()                 限制连接点匹配参数为指定类型的执行方法
@args()               限制连接点匹配参数由指定注解标注的执行方法
execution()           用于匹配是连接点的执行方法
this()                限制连接点匹配AOP代理的bean引用为指定类型的类
target                限制连接点匹配目标对象为指定类型的类
@target               限制连接点匹配特定的执行对象,这些对象对应的类要具有指定类型的注解
within                限制连接点匹配指定的类型
@within               限制连接点匹配指定注解所标注的类型(当使用springaop时,方法定义在由指定的注解所标注的类里)
@annotation           限定匹配带有指定注解的连接点
---------------------------------------------------------------------------------------------------------------------

在Spring中尝试使用其他指示器时,将会抛出ILLegalArgument-Exception异常
5 编写切点
1)

package concert;
public interface Performance{
	public void perform();
}

在这里插入图片描述
备注:上图中使用了"&&“操作符把execution()和within()指示器连接在一起形成与(and)关系(切点必须匹配所有的指示器).类似的我们可以用”||“操作符标识或(or)关系,而使用”!“操作符来标识非(not)操作.因为”&“在xml中有特殊含义,所以在spring的xml配置里面描述切点时,我们可以使用and来代替”&&".同样也可以使用or或not分别代替"||“和”!".
2)在切点中选择bean
execution(* concert.Performance.perform()) and !bean(‘woodstock’)
此时,切面的通知会被编织到所有ID不为woodstock的bean中

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值