学习AOP

AOP(Aspect Oriented Programming)是面向切面的编程,是OOP的重要扩展。

AOP可以通过静态编译或者动态代理机制实现,基本原理是静态或动态的生成需要做增强处理的方法/属性/构造的代理对象,当需要调用这些方法/属性/构造时,会调用增强了的方法/属性/构造。

如果把已有业务逻辑称为纵向,AOP主要应用场景是在某些业务逻辑点做横切(cross cutting),为这些业务逻辑点实现更为丰富的功能,例如验证,日志,事务处理,异常处理等,AOP称之为横切关注点(cross-cutting concerns)。Advice是增强功能的实现,切点(pointcut)是增强代码开始的位置,建议和切点和在一起称为切面(Aspect)。
连接点模式(join point models/JPM),一个JPM定义了三个事情:

  1. 什么时候Adivce可以运行。这些被称为连接点(join points),例如方法执行,属性引用或构造。
  2. 指定连接点的方式,称为切点(piontcuts),可以是方法签名。
  3. 连接点运行的代码,称为Advice。

Weave(织入)
将切面应用到目标对象并导致代理对象创建的过程

这些增强功能特点是和业务逻辑不直接相关,分布广,位置散,且重复,AOP可以有效的实现这些需求。

静态代理是在运行前创建代理对象;动态代理是在运行时创建代理对象。

AspectJ,Spring AOP,JBoss是主流的AOP实现,主要是帮助完成织入代理的功能,易用性和性能上各有千秋。

Spring AOP
建立代理的顺序:
1。默认使用java动态代理实现,可以为有接口的实例实现代理
2。当需要代理类,而不是代理接口时,用CGLib实现
定义了切入点和增强类后,Spring AOP有两种方式织入代理:配置文件aop.xml和注解@Aspect。

这里写图片描述

《选择正确的时机进行编织》
https://www.ibm.com/developerworks/cn/java/j-aop-weave/index.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值