Spring的AOP细节理解
什么是AOP?
AOP:是面向切面编程,是对面向对象编程(oop)的一种补充,
为什么需要AOP?
例如在我们做一个计算器,要求我们每次运行对应的功能(也就是进行运算时)都要输出日志,以便于知道程序是怎么运行的
如果在OOP中,那么肯定需要抽象出一个log(日志)类吧,然后再每个方法前调用这个new一个log(日志)类,然后调用的方法,并传入不同的参数,
第一个问题,就是代码混乱吖,就是不是核心处理的代码也出现在核心的类里面,以后维护的时候,我还要去区分这个代码是什么来的,
第二个问题:就是代码太分散,就是当以后维护的时候需求发生变化的时候,比如我输出日志的格式发生改变,以前日志是输出XXXXXXXX,我现在要求日志输出时AAAAAAAAA,
那这样我是不是要每个类的去修改?比如我又几千几万行代码,那这样耗费的时间是不是好多
如何使用AOP:(AOP的本质就是Java的一个动态代理,只是AspectJ把这个东西封装好,在Spring中可以更加的好利用)
使用AOP步骤:1创建切面,2定义通知,3实现通知
具体步骤可以参考这个http://www.cnblogs.com/jeremy-blog/p/4023743.html
AOP的术语
切面(Aspect): 有多个横切关注点组成,切面就是横切关注点被模块化后的特殊对象(原本横切关注点是分布在各个类里的,但是通过AOP被模块化到一个特殊的对象里,而这个特殊的对象就是切面,),
横切关注点: 跨越应用程序多个模块的功能(也可以说是需求,也可以说是方法)
通知(Advice): 切面必须要完成的工作(就是切面的功能(也就是切面的横切关注点,也可以说是切面里的方法))
目标(Target): 被通知的对象()
代理(Proxy): 向目标对象应用通知之后(调用切面的方法后)创建的对象(就是代理对象)
连接点(Joinpoint)(物理存在):程序执行的某个特定位置:如类某个方法调用前、调用后、方法抛出异常后等。连接点由两个信息确定:方法-》表示的程序执行点;相对点-》表示的方位(执行点的前后)。例如 执行的ArithmethicCalculator#add() 方法时,执行点为 ArithmethicCalculator#add(); 方位为该方法执行前的位置
切点(pointcut):每个类都拥有多个连接点:例如 ArithmethicCalculator 的所有方法实际上都是连接点,即连接点是程序类中客观存在的事务。AOP 通过切点定位到特定的连接点。类比:连接点相当于数据库中的记录,切点相当于查询条件。切点和连接点不是一对一的关系,一个切点匹配多个连接点,切点通过 org.springframework.aop.Pointcut 接口进行描述,它使用类和方法作为连接点的查询条件。
最新文章
- Android面试一天一题(1Day)
- 14、ASP.NET MVC入门到精通——Ajax
- RPM安装MySQL
- Codeforces Round #374 (div.2)遗憾题合集
- com.microsoft.sqlserver.jdbc.SQLServerException: 到主机 的 TCP/IP 连接失败。 java.net.ConnectException: Connection refused: connect
- 在navgationController中添加UISegmentedControl
- Delphi XE5 for android 使用 BITMAP STYLE DESIGNER 改变控件背景
- springmvc+hibernate入门-揭开神秘的面纱
- hdu 1573 x问题(中国剩余定理)HDU 2007-1 Programming Contest
- C# 之 服务端获取远程资源
- 以后坚持用java
- gdb - 列出所有函数调用
- Scala note 1
- MicroService.Core简易微服务框架《一、简介》
- First Scala
- kafka学习笔记整理01
- 高手速成android开源项目【项目篇】
- python - json/pickle
- phpBB3.2开发环境配置
- SpringBoot自动配置的实现原理
热门文章
- linux kill 关闭进程命令
- 编译器DIY——读文件
- Hp &;&; Dell服务器硬件监控
- 01、Windows Store APP 设置页面横竖屏的方法
- Hystrix的原理与使用
- Okra框架(二) 搭建Socket服务器
- at91 uart driver for vxworks
- How to activate maven profile inside eclipse
- Spring Framework 官方文档学习(一)介绍
- 【BZOJ】1660: [Usaco2006 Nov]Bad Hair Day 乱发节(单调栈)