最强SpringBoot---AOP整合之列文虎克,文章有点常长,你得慢慢读,读之前请说阿弥陀佛,前三部分都是理论,后五部分是实践操作,有案例有测试代码有测试结果,所有的通知类型demo都有。读完简单介绍和目的便可以去实践,回来再看理论,你会豁然开朗
AOP--简单介绍 ---(理论概念)
AOP即是Aspect Oriented Program 面向切面编程
首先,在面向切面编程的思想里面,把功能分为核心业务功能和周边功能
所谓的核心业务:比如登录,增加数据,删除数据都叫核心业务
所谓的周边功能:比如性能统计,日志,事务管理等等
周边功能在Spring的面向切面编程AOP思想里面,即被定义为切面
在面向切面编程的思想中,是把我们的主要核心业务和周边功能分成两部分,单独开发,
然后把切面功能和核心业务功能“编织”在一起,这就叫AOP。
AOP--实现目的 ---(理论概念)
AOP能够将那些与业务无关,却为业务模块所共同调用的逻辑或责任(例如事务处理、日志
管理、权限控制等)封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的
可拓展性和可维护性。
亲,搞完感觉还可以的话就来,三连我,艾特我,欢迎您下次再来,不要吝啬您的赞哦
AOP--理论概念 ---(理论概念)
- 切面(Aspect):一个关注点的模块化,这个关注点可能会横切多个对象。事务管理是Java应用程序中一个关于横切关注点的很好的例子。在Spring AOP中,切面可以使用通过类(基于模式(XML)的风格)或者在普通类中以@Aspect注解(AspectJ风格)来实现。
- 连接点(Join point):程序执行过程中某个特定的点,比如某方法调用的时候或者处理异常的时候。在Spring AOP中一个连接点总是代表一个方法的执行。个人理解:AOP拦截到的方法就是一个连接点。通过声明一个org.aspectj.lang.JoinPoint类型参数我们可以在通知(Advice)中获得连接点的信息。这个在稍后会给出案例。
- 通知(Advice):在切面(Aspect)的某个特定连接点上(Join point)执行的动作。通知的类型包括"around","before","after"等等。通知的类型将在后面进行讨论。许多AOP框架,包括Spring 都是以拦截器作为通知的模型,并维护一个以连接点为中心的拦截器链。总之就是AOP对连接点的处理通过通知来执行。个人理解:Advice指当一个方法被AOP拦截到的时候要执行的代码。
- 切入点(Pointcut):匹配连接点(Join point)的断言。通知(Advice)跟切入点表达式关联,并在与切入点匹配的任何连接点上面运行。切入点表达式如何跟连接点匹配是AOP的核心,Spring默认使用AspectJ作为切入点语法。个人理解:通过切入点的表达式来确定哪些方法要被AOP拦截,之后这些被拦截的方法会执行相对应的Advice代码。
- 引入(Introduction):声明额外的方法或字段。Spring AOP允许你向任何被通知(Advice)对象引入一个新的接口(及其实现类)。个人理解:AOP允许在运行时动态的向代理对象实现新的接口来完成一些额外的功能并且不影响现有对象的功能。
- 目标对象(Target object):被一个或多个切面(Aspect)所通知(Advice)的对象,也称作被通知对象。由于Spring AOP是通过运行时代理实现的,所以这个对象永远是被代理对象。个人理解:所有的对象在AOP中都会生成一个代理类,AOP整个过程都是针对代理类在进行处理。
- AOP代理(AOP proxy):AOP框架创建的对象,用来实现切面契约(aspect contract)(包括通知方法执行等功能),在Spring中AOP可以是JDK动态代理或者是CGLIB代理。
- 织入(Weaving):把切面(aspect)连接到其他的应用程序类型或者对象上,并创建一个被通知对象。这些可以在编译时(例如使用AspectJ编译器),类加载时和运行时完成。Spring和其他纯AOP框架一样,在运行时完成织入。个人理解:把切面跟对象关联并创建该对象的代理对象的过程。
AOP--引入依赖 ---(实现过程)Maven依赖
maven依赖添加如下
<!--引入SpringBoot的Web模块-->
<dependency>
<groupId>org.springframework.bo