Sping的AOP理解
首先是百度百科对AOP的解释:
在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。
要理解面向切面编程,首先需要理解什么是切面,顾名思义一刀把瓜切开,就有两个切面。在编程中,对象跟对象之间,方法跟方法之间,模块跟模块之间都是一个个切面。
举个例子,编程中把一个if条件抽取出来当作一个方法,然后其他需要用到这个if的地方全都改成调用这个抽出来的方法,优化了一下。但是同理,我每个地方都得调用太麻烦了,那就再优化一下,改成注入到接口的某个地方,这样就是实现了面向切面,比如日志,安全校验,缓存等。
AOP中的其他专业概念:
- Aspect(切面): Aspect 声明类似于 Java 中的类声明,在 Aspect 中会包含着一些 Pointcut 以及相应的 Advice。
- Joint point(连接点):表示在程序中明确定义的点,典型的包括方法调用,对类成员的访问以及异常处理程序块的执行等等,它自身还可以嵌套其它 joint point。
- Pointcut(切点):表示一组 joint point,这些 joint point 或是通过逻辑关系组合起来,或是通过通配、正则表达式等方式集中起来,它定义了相应的 Advice 将要发生的地方。
- Advice(增强):Advice 定义了在 Pointcut 里面定义的程序点具体要做的操作,它通过 before、after 和 around 来区别是在每个 joint point 之前、之后还是代替执行的代码。
- Target(目标对象):织入 Advice 的目标对象.。
- Weaving(织入):将 Aspect 和其他对象连接起来, 并创建 Adviced object 的过程
Sping的AOP理解相关推荐
- Spring的AOP理解
OOP面向对象,允许开发者定义纵向的关系,但并不适用于定义横向的关系,会导致大量代码的重复,而不利于各个模块的重用. AOP,一般称为面向切面,作为面向对象的一种补充,用于将那些与业务无关,但却对多个 ...
- 11 Sping框架--AOP的相关概念及其应用
1.AOP的概念 AOP(Aspect Oriented Programming 面向切面编程),通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术.AOP是OOP的延续,是软件开发中的一 ...
- SpringBoot AOP 理解和用途
背景:开发软件时核心流程是业务的层级 从上到下 而其中编写业务的同时我们在代码中又加入了日志记录.异常处理.事务处理.权限等一些与业务毫不相关的操作. 基于以上场景 Aop应运而生 ,它主要解决与业 ...
- java Spring的AOP理解和动态代理
Spring的AOP OOP面向对象,允许开发者定义纵向的关系,但并不适用于定义横向的关系,会导致大量代码的重复,而不利于各个模块的重用. AOP,一般称为面向切面,作为面向对象的一种补充,用于将那些 ...
- 通俗理解Spring的IOC和AOP
字面意思通俗理解: 参考Aop理解地址:https://blog.csdn.net/ios_xumin/article/details/78465782 参考IOC和DI理解地址:https://bl ...
- springIOC和AOP的理解
Spring的IOC理解 1.IOC 控制反转,是指创建对象的控制权转移,以前创建对象的主动权和时机是由自己把控的,而现在这种权力转移到spring容器中,并由容器根据配置文件去创建实例和管理各个实例 ...
- 面试官:谈谈你对IOC和AOP的理解及AOP四种实现方式
目录 一.IOC与AOP介绍 二.实现AOP的四种方式 方式1:基于经典代理来实现 方式2:使用Spring AOP的API接口 方式3:自定义类来实现AOP 方式4:基于注解实现 一.IOC与AOP ...
- 【SSM框架系列】Spring 的 AOP(面向切面编程)
什么是 AOP AOP 为 Aspect Oriented Programming 的缩写,意思为面向切面编程,是通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术. AOP 是 OOP ...
- 【Spring】---【AOP】
转发几篇文章 专治不会看源码的毛病--spring源码解析AOP篇 Spring3:AOP 理解AOP 什么是AOP? 转自: http://www.cnblogs.com/xiexj/p/73668 ...
最新文章
- Leetcode 746. Min Cost Climbing Stairs
- C# WinForm 技巧十: 开发工具
- [转]jquery的一个模板引擎-zt
- 使用AspectJ,Javassist和Java Proxy进行代码注入的实用介绍
- python联科_联科集团携手阿里云发布科研混合云平台 共建科研教育新生态
- w25q64 linux,W25Q64Flash芯片STM32操作
- 2个简单shell脚本(if,while,case语句)
- Python MySQL示例教程
- Linux下原生异步IO接口libaio介绍
- php点击打开新窗口打开网页,php实现弹出新页面的方法
- 香槟分校计算机专业毕业生去向,2019年伊利诺伊州立大学香槟分校计算机专业排名_托普仕留学...
- 元宇宙专题003 | 如何才能抢先一步,各个省市元宇宙布局抢先看
- Win10系统自带的虚拟机怎么打开教学
- RabbitMQ特殊应用
- Anaconda教程
- 树莓派4B安装Ubuntu Server20.04(18.04)连接wifi(对于ubuntu server 99%适用)
- 网管的自我修养-人际关系
- 约瑟夫环问题:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。...
- 左右手坐标系与旋转正向
- AS WIFI 无线调试