什么是AOP?

AOP是OOP的延续,是Aspect Oriented Programming的缩写,意思是面向方面编程。AOP实际是GoF设计模式的延续,设计模式孜孜不倦追求的是调用者和被调用者之间的解耦,AOP可以说也是这种目标的一种实现。

为什么使用AOP?

 

将通用需求功能从不相关类之中分离出来;同时,能够使得很多类共享一个行为,一旦行为发生变化,不必修改很多类,只要修改这个行为就可以。我们把这种行为称为"分散关注" AOP就是这种实现分散关注的编程方法,它将“关注”封装在“方面”中。

AOP的本质可以理解为"动态代理模式",想想代理模式的作用就更容易理解AOP了,可以把前面写的一篇动态代理封装事务的文章作为例子

AOP开发过程?

1、分离关注点:分解需求提取出横切关注点和一般关注点。就一般的系统而言,比较常见的关注点为:日志关注点,权限关注点,事务关注点。

2、实现关注点:各自独立地实现关注点,例如日志模块,权限模块。

3、组合关注点:即确定在什么时候执行关注点,例如在每个操作的开始需要开启事务,每个操作结束关闭事务。

我们再来看一下AOP的原理图帮助我们理解AOP的开发过程

Cross Cutting Concern:横切性关注点,是一种独立服务,它会遍布在系统的处理流程之中

Aspect:对横切性关注点的模块化

Advice:对横切性关注点的具体实现

Pointcut:它定义了Advice应用到哪些JoinPoint上,对Spring来说是方法调用

JoinPoint:Advice在应用程序上执行的点或时机,如:Spring只支持方法的JoinPoint,Aspecj可以支持属性的JoinPoint

Weave:将Advice应用到Target Object上的过程叫织入,如Spring支持的是JDK动态代理

Target Object:Advice被应用的对象

Proxy:AOP织入方式之一,如Spring AOP默认使用JDK的动态代理,它的代理是运行时创建;也可以使用CGLIB代理,它的织入方式字节码动态生成;还有Aspecj织入方式:语言扩展

 

AOP的适用范围?

很明显,AOP非常适合开发J2EE容器服务器,如Jboss4.0

具体功能如下:

Authentication 权限

Caching 缓存

Context passing 内容传递

Error handling 错误处理

Lazy loading 懒加载

Debugging  调试

logging, tracing, profiling and monitoring 记录跟踪 优化 校准

Performance optimization 性能优化

Persistence  持久化

Resource pooling 资源池

Synchronization 同步

Transactions 事务

转载于:https://www.cnblogs.com/huidaoli/articles/3370754.html

关于AOP的几个问题相关推荐

  1. 简单两步,spring aop上手即用即会

    面向切面思想在于它的干净,对逻辑代码没有任何侵入性,只需要在想要切入的方法或者类之上加上自定义的注解即可. 首先,就是自定义一个注解: //这里我们定义一个名为 @MyPointer 的注解 @Doc ...

  2. Spring AOP + Redis解决重复提交的问题

    Spring AOP + Redis解决重复提交的问题 用户在点击操作的时候,可能会连续点击多次,虽然前端可以通过设置按钮的disable的属性来控制按钮不可连续点击,但是如果别人拿到请求进行模拟,依 ...

  3. 【Spring】面向切面编程AOP

    AOP基础 什么是AOP [废话解释]在软件业,AOP全称Aspect Oriented Programming 即:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术.AO ...

  4. SpringBoot集成AOP管理日志

    写在前面 如何将所有的通过url的请求参数以及返回结果都输出到日志中? 如果在controller的类中每个方法名都写一个log输出肯定是不明智的选择.使用Spring的AOP功能即可完成. AOP ...

  5. 利用Spring AOP与JAVA注解为系统增加日志功能

    Spring AOP一直是Spring的一个比较有特色的功能,利用它可以在现有的代码的任何地方,嵌入我们所想的逻辑功能,并且不需要改变我们现有的代码结构. 鉴于此,现在的系统已经完成了所有的功能的开发 ...

  6. Spring.Net Aop

    Spring.Net 有四种通知: IMethodBeforeAdvice,IAfterReturningAdvice,IMethodInterceptor,IThrowsAdvice BeforeA ...

  7. Spring AOP的一些概念

            切面(Aspect): 一个关注点的模块化,这个关注点可能会横切多个对象.事务管理是J2EE应用中一个关于横切关注点的很好的例子. 在Spring AOP中,切面可以使用通用类(基于模 ...

  8. (一)七种AOP实现方法

    在这里列表了我想到的在你的应用程序中加入AOP支持的所有方法.这里最主要的焦点是拦截,因为一旦有了拦截其它的事情都是细节. Approach 方法 Advantages 优点 Disadvantage ...

  9. Spring框架系列之AOP思想

    微信公众号:compassblog 欢迎关注.转发,互相学习,共同进步! 有任何问题,请后台留言联系! 1.AOP概述 (1).什么是 AOP AOP 为 Aspect Oriented Progra ...

  10. 【spring 5】AOP:spring中对于AOP的的实现

    在前两篇博客中,介绍了AOP实现的基础:静态代理和动态代理,这篇博客介绍spring中AOP的实现. 一.采用Annotation方式 首先引入jar包:aspectjrt.jar && ...

最新文章

  1. 一个丧心病狂的Github项目:东北话编程,大写的服!
  2. 【免费福利】零AI基础,如何搭建聊天机器人:技术架构剖析
  3. python中scale的用法_Python Decimal scaleb()用法及代码示例
  4. 计算机科学课程体系核心内容,计算机科学教育的课程体系之研究
  5. .NET Framework 4.0源代码
  6. java excil表格开发_JAVA导出Excel电子表格的方法
  7. 微控制器8位到32位变迁
  8. 程序员别埋头苦干了,花时间学点薪资谈判技巧多赚一个亿可好?
  9. HDU 1730 Northcott Game
  10. js属性-map set
  11. ccccccccccccccccccccc
  12. Iar工程调试使用教程
  13. 不同的智能门锁解决方案开锁方式
  14. 格式化日期为xxxx-xx-xx hh:mm:ss
  15. 如何将docker部署的wekan迁移另一台服务器
  16. Livezilla安装配置, APE(Ajax Push Engine)安装配置
  17. Hp服务器系统盘被热拔插会怎么样,被骗十几年 原来这些设备不能热插拔!
  18. Tri Tiling·递推
  19. 【location】将url参数转换为对象的形式
  20. matlab bsxfun memory,matlab – BSXFUN关于关系操作的内存效率

热门文章

  1. 快速取得三位数的个位,十位,百位
  2. mysql 连接 互联网_互联网技术分享社区 MySQL字符串连接函数
  3. Unity MRTK(二)常见操作
  4. Leetcode之最长公共前缀
  5. idea中本地git如何切换分支
  6. 我喜欢用计算机400字,我喜欢电脑画画作文400字
  7. 简单理解Zookeeper的Leader选举
  8. linux ubuntu/centos git 客户端编译安装升级
  9. IDEA 打包 exe 程序 与 javafxpackager 打包 exe 程序
  10. 阶段3 2.Spring_04.Spring的常用注解_4 由Component衍生的注解