Spring的AOP切面表达式

Spring的AOP切面表达式
Spring中通过切入点表达式定义具体切入点,其常用AOP切入点表达式定义及说明

指示符作用
bean用于匹配指定bean id的的方法执行
within用于匹配指定包名下类型内的方法执行
@annotation用于匹配指定注解修饰的方法执行(细粒度)
execution用于进行细粒度方法匹配执行具体业务

1.bean应用于类级别,实现粗粒度的控制

bean("userServiceImpl"))	//指定一个类
bean("*ServiceImpl")	//指定所有的后缀为service的类

2.Within表达式应用增强

/**within应用于类级别,实现粗粒度的切面表达式定义*/
within("aop.service.UserServiceImpl")	//指定类,只能指定一个类
within("aop.service.*")	//只包括当前目录下的类
within("aop.service..*")	//指定当前目录包含所有子目录中的类

3. @annotation表达式应用增强

/**@annotaion应用于方法级别,实现细粒度的控制**/
@annotation("com.ls.anno.ReqLog"))	//指定一个需要实现增强功能的方法

4. execution表达式应用增强

/**execution方法级别,细粒度的控制
*语法:execution(返回值类型 包名.类名.方法名(参数列表))*/
execution(void aop.service.UserServiceImpl.addUser())	//匹配方法
execution(void aop.service.PersonServiceImpl.addUser(String))	//方法参数必须为字符串
execution(* aop.service..*.*(..))	//万能配置
execution(public * com.ls.service..*Service*.*(..)) //所有的公共的(public )的方法

切面通知增强

在AOP编程中有五种类型的通知:
1) 前置通知 (@Before) 方法执行之前执行
2) 返回通知 (@AfterReturning) 方法return之后执行
3) 异常通知 (@AfterThrowing) 方法出现异常之后执行
4) 后置通知 (@After) : 又称之为最终(始终要执行)通知(finally)
5) 环绕通知 (@Around) :如上四个一起使用时可以直接使用@Around通知替换

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值