关于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 ...
随机推荐
- Git 基础 - Git Aliases
$ git config --global alias.co checkout $ git config --global alias.br branch $ git config --global ...
- Android_1_渐变背景色
首先创建一个渐变背景色文件drawable-mdpi/bg_color.xml <?xml version="1.0" encoding="utf-8"? ...
- double free or corruption的原因
问题描述: 使用hiredisCluster 运行报错,错误截图如下: 通过分析hiredis源代码发现,在net.c的源文件中283行代码: c->tcp.host = strdup(addr ...
- Flash AIR14导出ipa到Mac上的iOS模拟器测试
没错!你没看错!俺这篇博客就是关于Flash AIR的! ----------------无聊的分割线------------------ 朋友最近学习Flash AIR for iOS开发,想找我帮 ...
- JDK1.5新特性(五)……Typesafe Enums
援引 Typesafe Enums - This flexible object-oriented enumerated type facility allows you to create enum ...
- prefuse学习(二)显示一张图
1. 把数据以点连线的方式在画面中显示 2. 数据按照数据的性别属性使用不同的颜色 3. 鼠标左键可以把图在画面中拖动 4. 鼠标右键可以把图放大或者缩小 5. 鼠标单击某个数据上,该数据点 ...
- 【noip2009】靶形数独
题解: 又是搜索- - 加状态压缩剪枝 二进制记下每行 每列 每个九宫格用过的数是谁 枚举的时候可以O(1)判断冲突 还有个很重要的剪枝 把可能使用数字最少的格子先搜索 代码: #include &l ...
- Xcode5和ios7下交叉编译ffmpeg
先申明本机环境 dev-mini:ffmpeg devone$ sw_vers ProductName: Mac OS X ProductVersion: BuildVersion: 1 ...
- 常用的各种标准下载网站(HB GB GJB MH)
标准分享网 http://www.bzfxw.com/ 标准下载网 http://www.bzxz.net/ 搜标准网 http://www.biaozhunw.com/Index.html 标准 ...
- Keil MDK 无法设置断点【worldsing】
要解决一个问题就怕不知道怎么搜索,或是别人没有遇到过: 同样碰到Keil MDK Debug调试无法设置断点问题,首先来问百度,GOOGLE,一下是我搜索到的结果: 1.keil 不能设置断点,每 ...