AOP

一. AOP概念

(1)AOP:面向切面编程(方面)编程:扩展一个功能不是通过修改源代码实现
(2)AOP采取横向抽取机制,取代了传统的纵向集成体系重复性代码(性能监视,事务管理,安全检查,缓存)

二.AOP原理(画图分析)

(1)纵向抽取机制:
定义一个类,如果我们需要扩展其功能(比如说添加日志功能)
最原始的实现方式是修改源代码,在方法中添加日志逻辑
这样会比较麻烦,工作量比较大,我们可以采用纵向抽取机制来解决
我们定义一个BaseUser的封装类,在里面创建日志添加的方法,然后用User继承BaseUser类,在User里面调用父类的方法(添加日志),这样实现了User类的功能扩展
这里写图片描述

(2)横向抽取机制
第一种情况:针对于有接口的情况
这里写图片描述

第二种情况:针对于没有接口的情况:
这里写图片描述

三. AOP操作相关术语

首先我给出官方的定义,再来一一解释这些术语所指(主要掌握三个,较常用):

—Joinpiont(连接点):所谓连接点是指那些被拦截到的点,在Spring中,这些点指的是方法,因为Spring只支持方法类型的连接点;

—Pointcut(切入点):所谓切入点是指我们要对哪些连接点进行拦截定义;

—Aspect(切面):是切入点和通知(引介)的结合

—Advice(通知/增强):所谓通知是指拦截到连接点之后所要做的事情就是通知,通知分为前置通知,后置通知,异常通知,最终通知,环绕通知(切面要完成的功能)
这里写图片描述
—Joinpiont(连接点):类里面可以被增强的方法,这些方法就称为连接点

—Pointcut(切入点):在类里面可以有很多方法可以被增强,比如实际操作中,只是增强了类里面add方法和update方法,那么实际增强的方法就称为切入点

—Aspect(切面): 把增强应用到具体方法上,这个过程称为切面,也就是说,把增强用到切入点的过程叫做切面,比如说我在add方法中增强日志功能的这个过程就叫做切面

—Advice(通知/增强):增强的逻辑,比如扩展日志功能,这个日志功能成为增强
前置通知: 在方法之前来执行(add方法或者update方法之前)
后置通知: 在方法之后来执行(add方法或者update方法之后)
异常通知: 方法出现异常执行
最终通知: 在后置通知之后来执行
环绕通知: 在方法之前和之后来执行(add方法或者update方法之前和之后)

当然还有一些其他的操作术语,但是不常用,了解即可,这边同样也给出解释
–Target( 目标对象 ):被代理的对象
–Weave( 织入 ):将切面应用到目标对象并生成代理对象的这个过程即为织入。
–Introduction( 引入 ):在不修改原有应用程序代码的情况下,在程序运行期为类动态添加方法或者字段的过程称为引入

四.Spring的aop操作

1.在Spring里面进行aop操作,使用aspectJ实现
(1)aspectj不是Spring一部分,和Spring一起使用进行aop操作
(2)Spring2.0以后新增了对Aspectj支持

2使用aspectj实现aop有两种方式
(1)基于aspectj的xml配置
(2)基于aspectj的注解的方式

Aop操作的准备工作
1.除了导入最基本的jar包之外还需要导入aop相关的jar包
这里写图片描述

2.创建Spring核心配置文件,导入aop约束
这里写图片描述

使用表达式配置切入点:
1.切入点:实际增强的方法
2.常用的表达式
execution(<访问修饰符>?<返回类型><方法名>(<参数>)<异常>)
(1)第一种写法
这里写图片描述

(2)第二种写法
这里写图片描述

(3)第三种写法
这里写图片描述

五.Aspectj的aop操作(xml配置文件的方式)

1.先创建两个对象
2.配置切入点
3.配置切面
4.引用的是哪一个切入点
这里写图片描述

后续会更新基于aspectj的注解aop操作

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值