关于Spring中AOP的理解
AOP简介【理解】【重点】
1.AOP(Aspect Oriented Programing)面向切面/方面编程
2.AOP隶属软件工程的范畴,指导开发人员如何制作开发软件,进行结构设计
3.AOP联盟:掌握着AOP的发展方向
4.AOP开发只关注共性功能
5.主思想:在不惊动原始设计的基础之上,为原始设计追加功能
*插拔式组件体系结构
*OOP与AOP区别
OOP开发,关注的是层与层之间的关系,及其每层中各个实现类如何制作
AOP开发,关注的是共性功能,无论该共性功能是否服务于同一层面的类
将共性功能抽取出来,制作成独立的模块,在程序运行时,动态的为其追加该功能
6.AOP核心思想
AOP关注的是程序中的共性功能,开发时,将共性功能抽取出来制作成独立的功能模块,此时原始功能中将不具有这些被抽取出的共性功能代码。在当时具有被抽取的共性功能的模块运行时候,将共性功能,模块进行运行,即可完成原始的功能。
优点:加强代码的复用性,同时程序开发时可以只考虑个性化的功能,不需要考虑共性功能
l 连接点(Joinpoint):类中的任意方法的运行时表示,可以简单理解为类中的方法
l 切入点(Pointcut) :具有共性功能的方法的运行时表示,可以简单理解为具有共性功能的方法
注意:切入点对应的是被挖去了共性功能后的方法执行时匹配断言(格式)
l 通知(Advice) :共性功能模块化,可以简单理解为将共性功能抽取出来制作成独立的方法
l 切面(Aspect) :切入点与通知的对应关系,可以简单理解为被抽取的共性功能与共性功能被抽取位置对应的方法之间的关系
l 目标对象(Target Object) :包含切入点的运行时对象,开发阶段制作的是目标对象对应的类
l AOP代理(AOP Proxy) :使用AOP的代理机制创建目标对象运行时代理对象,完成原始的功能
注意:原始目标对象已经被挖去了共性功能,此时使用目标对象执行任务无法完成原始任务,使用AOP代理机制,创建一个代理对象来完成原始目标对象的功能
l 织入(Weaving) :是一个将通知功能加入原始字节码的动态过程,共有三种方式,Spring使用的是运行时织入机制
l 【了解】引入(Introduction) :一种特殊的机制,可以为一个类的字节码动态的加入变量或方法
AOP工作流程:
开发时,制作功能类(目标对象类),将其中方法的通用功能(通知)抽取出来,制作成独立的类(通知类),原始目标对象中的方法(切入点)不再书写通用功能。通用功能被抽取后,原始目标对象无法完成完整的业务逻辑,需要在运行时将通知加入到对应的位置执行。为了完成此操作,必须将切入点与通知进行一对一的对应关系设定(切面)。
AOP运行流程:
运行时,Spring监控切面中所配置切入点对应方法的执行,发现执行了匹配的方法,使用AOP代理机制,创建代理对象(AOP代理),将原始方法(切入点)与通知进行融合,形成完整的业务逻辑并进行运行,此过程称为织入。
AOP的配置可以通过XML和注解的方式来实现....见后边的博文(每种方式单独写)
关于Spring中AOP的理解的更多相关文章
- Spring中AOP的理解
1.AOP的概念 AOP(AspectOriented Programming,面向切面编程)指的是可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下个程序动态统一添加功能的一种技术.AOP ...
- Spring 中aop切面注解实现
spring中aop的注解实现方式简单实例 上篇中我们讲到spring的xml实现,这里我们讲讲使用注解如何实现aop呢.前面已经讲过aop的简单理解了,这里就不在赘述了. 注解方式实现aop我们 ...
- JAVA高级架构师基础功:Spring中AOP的两种代理方式:动态代理和CGLIB详解
在spring框架中使用了两种代理方式: 1.JDK自带的动态代理. 2.Spring框架自己提供的CGLIB的方式. 这两种也是Spring框架核心AOP的基础. 在详细讲解上述提到的动态代理和CG ...
- 浅析Spring中AOP的实现原理——动态代理
一.前言 最近在复习Spring的相关内容,刚刚大致研究了一下Spring中,AOP的实现原理.这篇博客就来简单地聊一聊Spring的AOP是如何实现的,并通过一个简单的测试用例来验证一下.废话不 ...
- Spring中AOP相关的API及源码解析
Spring中AOP相关的API及源码解析 本系列文章: 读源码,我们可以从第一行读起 你知道Spring是怎么解析配置类的吗? 配置类为什么要添加@Configuration注解? 谈谈Spring ...
- Spring中IOC的理解
Spring中IOC的理解 1.什么是IOC? (1)控制反转.把对象创建和对象间的调用过程交给Spring进行管理. (2)使用IOC的目的:为了耦合度降低. 2.IOC底层原理? (1)xml解析 ...
- Spring中AOP原理,源码学习笔记
一.AOP(面向切面编程):通过预编译和运行期动态代理的方式在不改变代码的情况下给程序动态的添加一些功能.利用AOP可以对应用程序的各个部分进行隔离,在Spring中AOP主要用来分离业务逻辑和系统级 ...
- Spring中AOP简介与切面编程的使用
Spring中AOP简介与使用 什么是AOP? Aspect Oriented Programming(AOP),多译作 "面向切面编程",也就是说,对一段程序,从侧面插入,进行操 ...
- 框架源码系列十:Spring AOP(AOP的核心概念回顾、Spring中AOP的用法、Spring AOP 源码学习)
一.AOP的核心概念回顾 https://docs.spring.io/spring/docs/5.1.3.RELEASE/spring-framework-reference/core.html#a ...
随机推荐
- 面向对象(class0420)
测试 交换两个变量的值 int num1 = 5;int num2=6; 通过程序交换让num1 = 6,num2=5; 求两个数的最大值 (求三个数最大值) 求1-100之间所有奇数的和 找胖子,{ ...
- poj 1741 Tree(点分治)
Tree Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 15548 Accepted: 5054 Description ...
- CentOS无损调整home,root磁盘的大小
调整硬盘分区大小想增加root空间,减少home空间. 需要说明的是整个操作需要使用root用户. 1.查看硬盘使用情况. [root@Slave1 /]# df -h Filesystem Size ...
- OpenCV在Debug和Release两种模式下布恩那个同时运行的问题
首先,可以肯定的说,两者是可以随时切换进行运行的,若不能运行,必定是配置出了问题 以Debugx64和Releasex64为例: 在Releasex64模式下,我配置好了各种路径: 于是乎,我切换到D ...
- A Tour of Go Buffered Channels
Channels can be buffered. Provide the buffer length as the second argument to make to initialize a b ...
- 转载 基于Selenium WebDriver的Web应用自动化测试
转载原地址: https://www.ibm.com/developerworks/cn/web/1306_chenlei_webdriver/ 对于 Web 应用,软件测试人员在日常的测试工作中, ...
- UVA 10779 Collectors Problem(最大流)
这个题是很难往网络流上面构思的... 从s向每个物品增加容量为Bob拥有数的弧,然后从每个物品向t增加容量为1的弧(代表种类个数).这时候跑最大流的话,得到的肯定是Bob拥有的初始种类数.那么交换后的 ...
- gulp 基础运用
全局安装gulp $npm install --global gulp 作为项目的开发依赖安装 //--save-dev 开发依赖,储存在package.json的devDependencies中,如 ...
- 教你50招提升ASP.NET性能(四):精选的技巧
(4)A selection of tips 招数4: 精选的技巧 Make sure HTTP compression is turned on for any uncompressed conte ...
- cocos2d-x 判断系统语言
转自:http://blog.csdn.net/tangaowen/article/details/8878193 //default language is local language ccLan ...