关于AOP的几个问题

60 篇文章 0 订阅
16 篇文章 4 订阅

 

什么是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 事务

 

 

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值