关于AOP学习

AOP

一、什么是aop?
Aop是Aspect Oriented Programming的缩写,意思为面向切面编程,实质上就是动态代理的延伸
作用:在不修改源码的情况下,对方法进行功能增强
二、aop设计的相关概念
Target(目标对象):被增强的对象
Proxy(代理) :增强后的对象(代理=目标对象+增强)
JoinPoint(连接点):有可能被增强的方法
Pointcut(切入点):实际被增强的方法
Advice(通知/增强):封装增强业务逻辑的方法
Aspect(切面):切面类存放通知(存放增强的方法)
Weaving(织入):实现切入点+增强

三、aop的配置,通知的类型,如何配置
aop的配置:
首先需要加入aop的约束
把需要的对象交给spring处理
使用<aop:config>配置织入
使用aop:config中的aop:aspect标签配置切面
在aop:aspect内部配置通知的类型
通知的类型配置:
<aop:通知的类型 method:切面类中的方法名 pointcut=“切点表达式”></aop:通知类型>

前置通知 aop:before 在切入点之前运行
后置通知 aop:after-returning 在切入点之后运行
环绕通知 aop:around 在切入点之前和之后都运行
异常抛出通知 aop:after-throwing 在出现异常时运行
最终通知 aop:after 无论是否出现异常都运行
注:环绕通知要加参数 利用pjt.proceed方法, 通常情况下,环绕通知都是独⽴使⽤的

public void around(ProceedingJoinPoint pjt){
    System.out.println("嘿嘿嘿!");
    try {
        System.out.println("111111");
        pjt.proceed();
        System.out.println("222222222222");
    } catch (Throwable throwable) {
        throwable.printStackTrace();
        System.out.println("33333333333");
    } finally {
        System.out.println("4444444");
    }
}

切点表达式的语法:
execution([修饰符] 返回值类型 包名.类名.方法名(参数))
注意:
1)访问修饰符可以省略。
2)返回值类型、包名、类名、方法名可以用 * 代表任意。
3)包名与类名之间一个点,代表当前包下的类,两个点…表示当前包及其子包下的类。
4)参数列表可以用两个点… 表示任意个数,任意类型的参数列表。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值