博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring系列教程——10AOP概述与原理
阅读量:3959 次
发布时间:2019-05-24

本文共 874 字,大约阅读时间需要 2 分钟。

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

本节开始我们讲解一个重要的内容:AOP。AOP全称为Aspect Oriented Programming,即面向切面编程。他是面向对象编程的一个延续,他是一种通过预编译方式运行期动态代理实现程序功能的统一维护的一种技术。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执行的原理图:

在这里插入图片描述

转载地址:http://mtlzi.baihongyu.com/

你可能感兴趣的文章