白话 spring AOP
------------------------------------ 剩下的时间不多了,抓经做自己想做的吧
AOP: 专业术语叫做面向切面的编程
为什么要使用aop: 为了简化代码, 将相同代码抽离处理, 然后在再使用所谓切面, 将这些功能加入进去
将这个抽离出来的功能叫做 advice(增强方法)(在什么地方干什么事情), 问题来了:这个advice 我应该放在类的哪些地方呢?
答: 在类的方法的前后,或者异常的抛出点,你都可以将这些advice 放在这些地方
上面这些可供advice 存放的地方,就叫做 “引入点”。
现在我将advice 插入到 某一个“引入点”, 那么这个“引入点” 就叫做 “插入点”
所以 “引入点” 和 “插入点” 之间是不同时期的同一个东西的叫法, 在没有引入advice 的时候这个叫做 “引入点”
引入“advice” 的时候, 这个叫做 “插入点”;
那现在上面确定, 在某一个具体的地方 “插入点” , 在什么时候干什么事情(advice) , 这个就被专业人士定义为“切面”。
白话描述 “切面”: 我现在手握增强剂, 我在 你睡觉前给你打, 这个就叫切面, 就是 你在什么地方,什么时间,干什么事情。、
那么现在我如何使用这个切面, 而且还是在不改变原有类的基础上,让整个程序不知道的基础悄悄的就给你进行了加强处理?
答: 我现在去找一个伪装者,伪装成你原来的样子,然后让JVM 发现不了,我先在已经将你进行替换了,
在 java 里面如何实现呢? 可以使用多态,实现原来的上一层接口,相当于给这个类找了一个兄弟, 这个在接口编程的世界里面
兄弟就可以不知不觉的替换掉了,这个“伪装者” 成功替换, 加强了原来的方法,还是在原有方法不知道的基础上
上面这些白话 就是 JDK动态代理,限制条件就是被加强的类,必须要有一个上层的接口
如果这个类没有这个上层接口怎么办, 本身就是一个孤家寡人怎么办?
答: 我还是去找一个“伪装者” ,但是这个这个伪装者的身份不是 “兄弟“ 而是 “儿子”, 就是继承这个类,
然后悄悄的给他加强。
上面的这种就是 CGLIB 动态代理
所以通过上面可以发现: AOP的实现是基于动态代理实现的
白话 spring AOP的更多相关文章
- 白话Spring(基础篇)---AOP(execution表达式)
作为AOP的最后一节内容,我们来简单总结一下切面表达式上见的书写方法.下面的那内容有参考其他博文,在此先对开源博客的各位大神表示感谢! -------------------------------- ...
- 白话Spring(基础篇)---AOP(execution表达式)(转)
[一知半解,就是给自己挖坑] 作为AOP的最后一节内容,我们来简单总结一下切面表达式上见的书写方法.下面的那内容有参考其他博文,在此先对开源博客的各位大神表示感谢! ----------------- ...
- 学习AOP之认识一下Spring AOP
心碎之事 要说知道AOP这个词倒是很久很久以前了,但是直到今天我也不敢说非常的理解它,其中的各种概念即抽象又太拗口. 在几次面试中都被问及AOP,但是真的没有答上来,或者都在面上,这给面试官的感觉就是 ...
- TinyFrame再续篇:整合Spring AOP实现日志拦截
上一篇中主要讲解了如何使用Spring IOC实现依赖注入的.但是操作的时候,有个很明显的问题没有解决,就是日志记录问题.如果手动添加,上百个上千个操作,每个操作都要写一遍WriteLog方法,工作量 ...
- Spring Aop中execution的语法
参考地址:https://blog.csdn.net/zz210891470/article/details/54175107 execution(* com.sample.service.impl. ...
- 学习AOP之深入一点Spring Aop
上一篇<学习AOP之认识一下SpringAOP>中大体的了解了代理.动态代理及SpringAop的知识.因为写的篇幅长了点所以还是再写一篇吧.接下来开始深入一点Spring aop的一些实 ...
- spring aop
什么是AOP AOP(Aspect-OrientedProgramming,面向方面编程),它利用一种称为“横切”的技术,剖解开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,并将 ...
- spring aop注解方式与xml方式配置
注解方式 applicationContext.xml 加入下面配置 <!--Spring Aop 启用自动代理注解 --> <aop:aspectj-autoproxy proxy ...
- 基于Spring AOP的JDK动态代理和CGLIB代理
一.AOP的概念 在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术.AOP是OOP的 ...
随机推荐
- CodeTypeDeclaration,CodeMemberProperty动态生成代码
由于是CodeDom些列,所以先介绍几个CodeDom表达式: :CodeConditionStatement:判断语句即是if(condition){} else{},看最全的那个构造函数: pub ...
- 前端Tips#2 - 将 arguments 转换成Array的最佳实践
本文同步自 JSCON简时空 - 技术博客,点击阅读 视频讲解 文字讲解 1.先讲结论 有很多种方式将 arguments 转换成数组,那么哪一种方式是最优的? 为节约大伙儿的时间,这里先说一下结论: ...
- 【题解】CTSC1999家园(网络流)
CTSC1999家园 建模方法类似我NOI2019网络同步赛我的T1写法[[题解]NOI2019Route](70分) 问题的焦点是:空间时间载具. 考虑如何击破时间限制,可以对每个点关于每个时刻建立 ...
- 洛谷$P$2522 $Problem\ b\ [HAOI2011]$ 莫比乌斯反演
正解:莫比乌斯反演 解题报告: 传送门! 首先看到这个显然就想到莫比乌斯反演$QwQ$? 就先瞎搞下呗$QwQ$ $gcd(x,y)=k$,即$gcd(\left \lfloor \frac{x}{k ...
- The server time zone value '�й���ʱ��' is unrecognized or represents more than one time zone错误的解决办法【已解决】
---恢复内容开始--- The server time zone value '�й���ʱ��' is unrecognized or represents more than one time ...
- 1059 C语言竞赛 (20 分)C语言
C 语言竞赛是浙江大学计算机学院主持的一个欢乐的竞赛.既然竞赛主旨是为了好玩,颁奖规则也就制定得很滑稽: 0.冠军将赢得一份"神秘大奖"(比如很巨大的一本学生研究论文集--). 1 ...
- Java基础知识学习(一)--引用
1.概念 如果一个变量的类型为类类型,而非基本类型,那么该变量就叫做引用: 2.对象引用 new Person(); 如上,代表创建了一个对象,但也仅仅是创建了,并没有办法去访问它. 为了访问 ...
- 关于i++的底层原理分析
首先看一道典型题 public class Test { static int x, y, z; static { int x = 5;//局部变量 x--; } static { x--; } pu ...
- ACM北大暑期课培训第三天
今天讲的内容是深搜和广搜 深搜(DFS) 从起点出发,走过的点要做标记,发现有没走过的点,就随意挑一个往前走,走不 了就回退,此种路径搜索策略就称为“深度优先搜索”,简称“深搜”. bool Dfs( ...
- 【转】在MyEclipse 8.6上搭建Android开发环境
内容导航 第 1 页:基本环境准备 第 2 页:下载Android SDK 第 3 页:配置SDK环境变量 第 4 页:给MyEclipse安装ADT插件 第 5 页:配置MyEclipse 第 6 ...