什么是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 接口进行描述,它使用类和方法作为连接点的查询条件。

最新文章

  1. Android面试一天一题(1Day)
  2. 14、ASP.NET MVC入门到精通——Ajax
  3. RPM安装MySQL
  4. Codeforces Round #374 (div.2)遗憾题合集
  5. com.microsoft.sqlserver.jdbc.SQLServerException: 到主机 的 TCP/IP 连接失败。 java.net.ConnectException: Connection refused: connect
  6. 在navgationController中添加UISegmentedControl
  7. Delphi XE5 for android 使用 BITMAP STYLE DESIGNER 改变控件背景
  8. springmvc+hibernate入门-揭开神秘的面纱
  9. hdu 1573 x问题(中国剩余定理)HDU 2007-1 Programming Contest
  10. C# 之 服务端获取远程资源
  11. 以后坚持用java
  12. gdb - 列出所有函数调用
  13. Scala note 1
  14. MicroService.Core简易微服务框架《一、简介》
  15. First Scala
  16. kafka学习笔记整理01
  17. 高手速成android开源项目【项目篇】
  18. python - json/pickle
  19. phpBB3.2开发环境配置
  20. SpringBoot自动配置的实现原理

热门文章

  1. linux kill 关闭进程命令
  2. 编译器DIY——读文件
  3. Hp && Dell服务器硬件监控
  4. 01、Windows Store APP 设置页面横竖屏的方法
  5. Hystrix的原理与使用
  6. Okra框架(二) 搭建Socket服务器
  7. at91 uart driver for vxworks
  8. How to activate maven profile inside eclipse
  9. Spring Framework 官方文档学习(一)介绍
  10. 【BZOJ】1660: [Usaco2006 Nov]Bad Hair Day 乱发节(单调栈)