AOP 概述


什么是 AOP       AOP:全称是 Aspect Oriented Programming 即:面向切面编程


AOP 的作用及优势

作用:

在程序运行期间,不修改源码对已有方法进行增强。

优势:

减少重复代码

提高开发效率

维护方便


AOP 的实现方式  使用动态代理技术


动态代理的特点 字节码随用随创建,随用随加载。


动态代理常用的有两种方式

提供者:JDK 官方的 Proxy 类。

要求:被代理类最少实现一个接口。

基于子类的动态代理

提供者:第三方的 CGLib,如果报 asmxxxx 异常,需要导入 asm.jar。

要求:被代理类不能用 final 修饰的类(最终类)。



Spring 中的 AOP

AOP 相关术语

Joinpoint(连接点): 所谓连接点是指那些被拦截到的点.在spring中,这些点指的是方法,因为spring 只支持方法类型的连接点。

Pointcut(切入点): 所谓切入点是指我们要对哪些 Joinpoint 进行拦截的定义。

Advice(通知/增强): 所谓通知是指拦截到 Joinpoint 之后所要做的事情就是通知。

                                       通知的类型:前置通知,后置通知,异常通知,最终通知,环绕通知。

Introduction(引介): 引介是一种特殊的通知在不修改类代码的前提下,

Introduction 可以在运行期为类动态地添加一些方 法或 Field。

Target(目标对象): 代理的目标对象。

Weaving(织入): 是指把增强应用到目标对象来创建新的代理对象的过程。

                                 spring 采用动态代理织入,而 AspectJ 采用编译期织入和类装载期织入。

Proxy(代理): 一个类被 AOP 织入增强后,就产生一个结果代理类。

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



学习 spring 中的 AOP 要明确的事

a、开发阶段(我们做的)

编写核心业务代码(开发主线):大部分程序员来做,要求熟悉业务需求。

把公用代码抽取出来,制作成通知。(开发阶段最后再做):AOP 编程人员来做。

在配置文件中,声明切入点与通知间的关系,即切面。:AOP 编程人员来做。

b、运行阶段(Spring 框架完成的)

Spring 框架监控切入点方法的执行

一旦监控到切入点方法被运行,使用代理机制,动态创建目标对象的代理对象,

根据通知类别,在代理对象的对应位置,将通知对应的功能织入,完成完整的代码逻辑运行。

动态代理——》AOP —— Spring 中的 AOP||AOP 相关术语||学习 spring 中的 AOP 要明确的事相关推荐

  1. Spring源码深度解析(郝佳)-学习-Spring消息-整合RabbitMQ及源码解析

      我们经常在Spring项目中或者Spring Boot项目中使用RabbitMQ,一般使用的时候,己经由前人将配置配置好了,我们只需要写一个注解或者调用一个消息发送或者接收消息的监听器即可,但是底 ...

  2. Spring源码深度解析(郝佳)-学习-Spring Boot体系原理

      Spring Boot是由Pivotal团队提供的全新框架,其设计目的用来简化新Spring应用初始化搭建以及开发过程,该框架使用了我写的方式进行配置,从而开发人员不再需要定义样板化的配置,通过这 ...

  3. python类定义中__init__()_转:python学习——类中为什么要定义__init__()方法

    学习Python的类,一直不太理解为什么一定要定义init()方法,现在简要谈一下自己的理解吧. 1.不用init()方法定义类 定义一个矩形的类,目的是求周长和面积. 1 classRectangl ...

  4. 一文带你搞懂从动态代理实现到Spring AOP

    摘要:本文主要讲了Spring Aop动态代理实现的两种方式. 1. Spring AOP Spring是一个轻型容器,Spring整个系列的最最核心的概念当属IoC.AOP.可见AOP是Spring ...

  5. Spring Boot实践——Spring AOP实现之动态代理

    Spring AOP 介绍 AOP的介绍可以查看 Spring Boot实践--AOP实现 与AspectJ的静态代理不同,Spring AOP使用的动态代理,所谓的动态代理就是说AOP框架不会去修改 ...

  6. Spring 从入门到精通 (十六) AOP底层如何创建动态代理类

    关键词:Spring | AOP | 创建代理类 | 底层 本专栏通过理论和实践相结合,系统学习框架核心思想及简单原理,原创不易,如果觉得文章对你有帮助,点赞收藏支持博主 ✨ 目录 一.创建对象三要素 ...

  7. spring 的AOP和动态代理分析

    spring的AOP到底是什么呢? 看看百度怎么说 AOP(Aspect Oriented Programming 面向切面编程),通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术.AO ...

  8. Spring AOP的两种动态代理方式的原理和实现(JDK和CGLIB)

    代理机制 Spring 的AOP 部分使用使用JDK动态代理,部分使用CGLIB来为目标对象创建代理.如果被代理的目标对象实现了至少一个接口,则会使用JDK动态代理:如果目标对象没有实现任何接口,则会 ...

  9. 【Spring AOP(2)篇】原理及两种实现方式(cglibjdk动态代理)

    简介: Spring AOP(Aspect-Oriented Programming,面向切面编程)是 Spring 框架的一个重要特性,用于解耦和切割业务逻辑,是实现面向切面编程的重要手段之一.本文 ...

最新文章

  1. OpenV P N + AD(Ldap) + GoogleAuth认证安装
  2. 【迁移学习】隐私保护下的迁移算法
  3. OpenCASCADE:建模算法之将触感的形状连接起来
  4. netapp做内网穿透有问题
  5. ajax会占用服务器端内存吗,javascript - 为什么不允许在jquery datatable服务器端处理ajax成功使用? - 堆栈内存溢出...
  6. 自动提示_EXCEL2013版突然打不开,自动修复提示1907错误
  7. Java基础篇(05):函数式编程概念和应用
  8. 使用AIDL实现进程间的通信
  9. 14. CSS 列表
  10. 【边喝caffee边Caffe 】(一)Caffe的安装
  11. java poi excel 图表_Java用POI实现根据Excel表格模板生成新的Excel并实现数据输出
  12. attachEvent方法绑定事件
  13. bootstrap布局_如何使用LayoutIt构建HTML Bootstrap布局!
  14. J2Cache SpringBoot集成(j2cache-spring-boot2-starter)
  15. VBA自动创建数据透视表
  16. L2TP连接尝试失败,因为安全层在初始化与远程计算机的协商时遇到一个处理错误
  17. 呼叫中心客服人员的秘密生活:同理心永远不会让你遭殃
  18. 面试题整理 自问自答
  19. Aggressive cows(c语言)
  20. 有关html的英文参考文献,出版英文科技专著:纠结的参考文献

热门文章

  1. POJ2891 Strange Way to Express Integers【扩展中国剩余定理】
  2. 零元学Expression Blend 4 - Chapter 40 Flash做的到的Blend也可以!轻松制作拥有动画的MenuBar!(上)...
  3. python基础之ATM-9
  4. mof格式的文件怎么打开?用什么工具?
  5. linux磁盘空间清理
  6. ZStack中的编程技巧
  7. MVC-07 案例1
  8. php关闭warning
  9. UDP穿越NAT原理
  10. asp.net关于kindeditor 上传图片出现服务器故障的解决办法