Spring系列教程——10AOP概述与原理

Spring系列教程——10AOP概述与原理

本节开始我们讲解一个重要的内容:AOP。AOP全称为Aspect Oriented Programming,即面向切面编程。他是面向对象编程的一个延续,他是一种通过预编译方式运行期动态代理实现程序功能的统一维护的一种技术。AOP降低了程序的耦合度,他采取横向抽取机制,取代了传统纵向继承体系重复性代码。

上一篇:Spring系列教程——09Spring注解开发

下一篇:Spring系列教程——11编程实现AOP

一.横向抽取机制

在传统的面向对象编程的方式里面,我们会有这样的写法:
BaseService 作为父类,它里面有一个方法add();那么现在他有一个子类UserService,那么自然地他的子类也可以使用add()方法,但是问题在于这个方法来自于父类,这里涉及到一个关键问题就是耦合度比较高,导致开发效率会比较低。

采用AOP技术就会是这样:
我们不让UserService去继承BaseService,这个时候我们创建一个新的类叫做MyAspect(切面类),那么这个切面类的作用就是调用UserService的add()方法时去做一些增强的操作,来获取我们想要的功能,这样的方式就好像在add()方法运行期时横向切入一般,我们称之为横向抽取机制

这便是AOP的原理,而其底层的实现是采用代理机制进行实现。关于代理机制一共有两种方式:

1.接口 + 实现类 :spring采用 jdk 的动态代理Proxy。
2.实现类:spring采用cglib字节码增强

二.AOP术语讲解

1.target:目标类,需要被代理的类。例如:UserService
2.Joinpoint(连接点):所谓连接点是指那些可能被拦截到的方法
3.PointCut 切入点:已经被增强的连接点。例如:add()
4.advice 通知/增强,增强代码。
5. Weaving(织入):是指把增强advice应用到目标对象target来创建新的代理对象proxy的过程.
6.proxy 代理类
7. Aspect(切面): 是切入点pointcut和通知advice的结合

这是一张AOP执行的原理图:
在这里插入图片描述
上一篇:Spring系列教程——09Spring注解开发
下一篇:Spring系列教程——11编程实现AOP

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值