Spring AOP(一)--基本概念
2021-06-17 07:04
标签:cto 表达式 src inf 使用 throw 自己的 正则表达 分享图片 AOP(Aspect Oriented Programing),意为面向切面编程,其实看了很多书本的介绍和说明,我觉得这些解释都太过书面,也可能是翻译的原因,总觉得还是不太懂,也难以理解这种叫法,尤其是这个切面。其实切面在数学中指的是“和球面只有一个交点的平面”,我猜测spring团队之所以这么起名应该也是受了这种数学思想的启发,所以我也以这个为出发点去理解它。面向切面编程,假设我的某个业务逻辑是一个球,有一个切面和它相交于一点,所以它们互不干扰,只是通过这个切点连接,帮助我们完成一些功能,我觉得AOP它跟拦截器是很类似的,只不过它就是把拦截器的功能抽取成一个规范流程,或者说是约定,让开发者按照这种流程去写代码,它的底层使用的是动态代理,其实就是一个拦截器,只不过比拦截器要规范和强大一些。下面是我从一本书上看来的AOP的流程图,理解了这种流程图也就能理解AOP的实现了: 从上图能看出,切面就是一个规范的流程,它有四类通知,通过切点来拦截连接点,因为概念太多,先通过这个图说一下面向编程中的术语。 一、面向切面编程的术语 1、切面(Aspect) 切面就是一套规范的流程,可以理解为一个拦截器,能定义被拦截方法执行前后可以执行的操作。 2、通知(Advice) 通知就是切面中的方法,它根据在代理真实对象方法调用前、后的顺序和业务逻辑进行区分,Spring AOP中有四种通知: 3、引入(Introduction) 引入允许我们在现有类里添加的自定义类或方法。比如我们要对一个被代理对象的逻辑进行优化,但是不能修改原方法时,可以使用引入来进行增强; 4、切点(Pointcut) 切点就是告诉Spring AOP什么时候启动拦截器并织入对应流程中。 5、连接点(join point) 连接点对应的是具体需要拦截的东西,比如通过切点的正则表达式去判断哪些方法是连接点,从而织入对应的通知; 6、织入(Weaving) 织入是一个生成代理对象,并且将切面内容放入到流程中的过程,它的实现方式就是动态代理。 二、Spring对AOP的支持 AOP并不是Spring框架独有的,只是Spring是支持AOP的框架之一。每一种框架对AOP的支持都有自己的特点,有些支持对方法参数的拦截,有些支持对方法的拦截,而Spring AOP它是一种基于方法拦截的AOP,且只能支持对方法的拦截,在Spring中有四种实现方式: 1??使用ProxyFactoryBean和对应的接口实现AOP 2??使用XML的方式实现 3??使用@AspectJ注解驱动切面 4??使用AspectJ注入切面 在spring中常用的是@AspectJ注解方式,XML方式能起到一定的辅助作用。 上面的术语实在是太晦涩了,我是从《JavaEE互联网轻量级框架整合开发》中选取的,下一篇文章我会通过代码实现的方式对这些术语进行解释。 Spring AOP(一)--基本概念 标签:cto 表达式 src inf 使用 throw 自己的 正则表达 分享图片 原文地址:https://www.cnblogs.com/hellowhy/p/9721242.html