我所理解的Spring AOP的基本概念
Spring AOP中的概念晦涩难懂,读官方文档更是像读天书,看了非常多样例后,写一些自己理解的一些spring的概念。要理解面向切面编程,要首先理解代理模式和动态代理模式。
如果一个OA系统中的一个功能是查看考勤信息,那么我们如果有要实现这个功能,要经历的步骤是:
1.启动日志,进行记录。
2.启动安全性的框架进行安全检验
3.验证权限
4.假设有权限,则查看考勤记录,假设无权限,则输出没有权限。
我们的目标方法是查看考勤记录,而前面运行了那么多与目标方法无关的方法。
那些与业务逻辑无关的方法叫切面。切面中的方法为通知。当验证权限通过后,就运行目标方法,则切入点就是验证权限的那个方法。形成代理方法的过程叫做织入,在client调用的方法就是连接点。
切面
日志、安全性的框架、权限的检查等,总之和业务逻辑没有关系的都能够看做切面
通知
切面中的方法
切入点
仅仅有符合切入点,才干把通知和目标方法结合在一起(就像样例中,仅仅有符合了权限,才干查看考勤记录)
连接点
client调用的方法
代理对象的方法=通知+目标方法(代理方法增强了对象的目标方法)
aop(面向切面编程):做到了代码块的重用
面向切面编程为什么做到了代码块的重用?那些切面在不同的地方能够调出来用,切面就是不同功能的代码块,能够通过代理模式增强某些目标方法。
再举个样例,对数据库的增删改查,增删改要开启事务管理,查不须要开启事务管理,对于开启事务,和提交事务,都属于非目标方法,能够看做切面,而增删改,是目标方法。开启事务和提交事务中的方法,是通知。通过动态代理模式,能够把通知和目标方法结合在一起。
我所理解的Spring AOP的基本概念的更多相关文章
- Spring AOP那些学术概念—通知、增强处理连接点(JoinPoint)切面(Aspect)
1.我所知道的AOP 初看起来,上来就是一大堆的术语,而且还有个拉风的名字,面向切面编程,都说是OOP的一种有益补充等等.一下让你不知所措,心想着:管不得很多人都和我说AOP多难多难.当我看进去以后, ...
- Spring AOP那些学术概念—通知、增强处理连接点(JoinPoint)切面(Aspect)(转)
1.我所知道的AOP 初看起来,上来就是一大堆的术语,而且还有个拉风的名字,面向切面编程,都说是OOP的一种有益补充等等.一下让你不知所措,心想着:管不得很多人都和我说AOP多难多难.当我看进去以后, ...
- spring AOP的基本概念
AOP的概念和使用原因 现实中有一些内容并不是面向对象(OOP)可以解决的,比如数据库事务,它对于企业级的Java EE应用而言是十分重要的,又如在电商网站购物需要经过交易系统.财务系统,对于交易系统 ...
- Spring AOP(一)--基本概念
AOP(Aspect Oriented Programing),意为面向切面编程,其实看了很多书本的介绍和说明,我觉得这些解释都太过书面,也可能是翻译的原因,总觉得还是不太懂,也难以理解这种叫法,尤其 ...
- Spring学习十三----------Spring AOP的基本概念
© 版权声明:本文为博主原创文章,转载请注明出处 什么是AOP -面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术 -主要的功能是:日志记录.性能统计.安全控制.事务处理. ...
- Spring理解IOC,DI,AOP作用,概念,理解。
IOC控制反转:创建实例对象的控制权从代码转换到Spring容器.实际就是在xml中配置.配置对象 实例化对象时,进行强转为自定义类型.默认返回类型是Object强类型. ApplicationCon ...
- 循序渐进之Spring AOP(2) - 基本概念
学习AOP前要先了解几个重要术语:Joinpoint.Pointcut.Advice 仍然以改装车比喻,拿到心爱的汽车后想做改装,第一件事是什么?找到要改装的地方.车上可改装的地方很多,但每个人感兴趣 ...
- 轻松理解 Spring AOP
目录 Spring AOP 简介 Spring AOP 的基本概念 面向切面编程 AOP 的目的 AOP 术语和流程 术语 流程 五大通知执行顺序 例子 图例 实际的代码 使用 Spring AOP ...
- Spring AOP 和 动态代理技术
AOP 是什么东西 首先来说 AOP 并不是 Spring 框架的核心技术之一,AOP 全称 Aspect Orient Programming,即面向切面的编程.其要解决的问题就是在不改变源代码的情 ...
随机推荐
- mysql5.6设置主从报错1236,Increase max_allowed_packet on master,原因却是Binlog偏移量不对
在试Mysql5.6,搭了个主从: CHANGE MASTER TO MASTER_HOST='1.2.3.4', master_user='slave', master_password='xxxq ...
- HDU 4946 Area of Mushroom 凸包
链接:pid=4946">http://acm.hdu.edu.cn/showproblem.php?pid=4946 题意:有n个人.在位置(xi,yi),速度是vi,假设对于某个点 ...
- Java彻底 - WEB容器的侦听具体解释 ServletContextListener
WEB容器的侦听器ServletContextListener主要用于监测容器启动和 当破坏需要做一些操作,听众将能够使用此做. ServletContextListener在Spring开始,然后再 ...
- HSV 量化
function L=hsvquan(hsv) %对HSV量化,该3维特征矢量: h=hsv(:,:,1); s=hsv(:,:,2); v=hsv(:,:,3); % 假设对HSV 空间进行适当的量 ...
- linux下getsockopt和setsockopt具体解释及測试
linux下getsockopt和setsockopt具体解释及測试 NAME 名字 getsockopt, setsockopt - get and set options on sockets 获 ...
- Python 实现类似PHP的strip_tags功能,并能够定义他们自己的一套保留标记
最近的研究 Python ,发现还是很习惯使用,多PHP这是非常easy该功能Python 这不得不找了半天,而且非常灵活不得不实现自己的. 我们今天聚集,需要过滤的内容标签,搞一个PM.外形似终于想 ...
- LeetCode 48 Anagrams
Given an array of strings, return all groups of strings that are anagrams. Note: All inputs will be ...
- c# Ftp下载程序源代码解析
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- harris 算法python实现
harris 最常用作特征检测算法. 第一个文件harris.py <pre name="code" class="python">from sci ...
- Chromium on Android: Android在系统Chromium为了实现主消息循环分析
总结:刚开始接触一个Chromium on Android时间.很好奇Chromium主消息循环是如何整合Android应用. 为Android计划,一旦启动,主线程将具有Java消息层循环处理系统事 ...