Spring AOP&切入点表达式

本文介绍了Spring的AOP概念,包括连接点、切入点、通知、切面和织入过程。详细阐述了通知的类型及执行顺序,并探讨了切入点表达式的写法。此外,还分别展示了基于XML和注解的AOP配置步骤,以及动态代理的选择。最后,讨论了切面中的环绕通知。
摘要由CSDN通过智能技术生成

AOP(Aspect Oriented Programming):是面向切面编程的技术。AOP基于IOC基础,是对OOP的有益补充。

AOP术语名词

Joinpoint:连接点是指所有可能织入通知的方法理论上大部分方法都是连接点

Pointcut:切入点,已经被增强的方法

Advice:通知,增强的方法

Aspect:切面,通知所在的类就叫切面。

Weaving:织入,将通知应用到目标对象来创建新的代理对象的过程。

通知类型及执行顺序

通知的类型: 1.<aop:before > (前置通知) 2.<aop:after-returning > 返回通知 3.<aop:after-throwing > 异常通知 4<aop:after >后置通知5.<aop:around > 环绕通知
通知的执行顺序

	try{
    
             调用前置通知 
             环绕前置处理 
             调用目标对象方法 
             环绕后置处理 
             调用后置通知 
      }catch(Exception e){
    
        调用异常通知 
      }finally{
    
        调用最终通知 
      }

注意:1.如果目标方法出现异常,将不会执行后置通知 (后置通知是在运行目标方法执行成功后调用的,如果目标方法执行失败(出现异常,后置通知将被调用 )2.最终通知无论是否发生异常都会执行

切入点表达式的写法

关键字:execution(表达式)
表达式格式:
访问修饰符 返回值 包名.包名.包名…类名.方法名(参数列表)
标准的表达式写法:
public void com.msg.service.impl.AccountServiceImpl.saveAccount()
访问修饰符可以省略
void com.msg.service.impl.AccountServiceImpl.saveAccount()
返回值可以使用通配符,表示任意返回值
* com.msg.service.impl.AccountServiceImpl.saveAccount()
包名可以使用通配符,表示任意包。但是有几级包,就需要写几个*.
* ....AccountServiceImpl.saveAccount())
包名可以使用…表示当前包及其子包
* …AccountServiceImpl.saveAccount()
类名和方法名都可以使用
来实现通配
* .()
参数列表:
可以直接写数据类型:
基本类型直接写名称 int
引用类型写包名.类名的方式 java.lang.String
可以使用通配符表示任意类型,但是必须有参数
可以使用…表示有无参数均可,有参数可以是任意类型(推荐使用)
全通配写法:
* .
(…)
实际开发中切入点表达式的通常写法:
切到业务层实现类下的所有方法
* com.msg.service.impl..(…)

Spring中基于XML的AOP配置步骤

  1. 把切面交给spring来管理

  2. 使用<aop:config >标签表明开始AOP的配置(以下内容都写在<aop:config >–</aop:config>)

  3. 使用< aop:pointcut > 指定:切入点
    id属性:是给切面提供一个唯一标识
    expression属性:用于指定切入点可使用切入点表达式。

  4. 在<aop:aspect >引入切面
    ref属性:引入切面

  5. 编写通知类型
    例如<aop:before >:表示配置前置通知

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值