SpringAOP机制

spring AOP概述

AOP(Aspect Oriented Programming)面向切面编程.是一种比较新颖的设计思想.是对OOP(Object Orientd Programming)面向对象编程的一种有益的补充.

 

1、OOP和AOP

OOP对业务处理过程中的实体及其属性和行为进行了抽象封装,以获得更加清晰高效果的逻辑划分.研究的是一种“静态的”领域。AOP则是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段.研究的是一种“动态的”领域。

 

2、AOP的基本术语

1)切面Aspect

业务处理过程中的一个截面.就像权限检查.通过切面,可以将不同层面的问题隔离开:比如浏览帖子和权限检查两者互不相干。这样一来,也就降低了耦合性,我们可以把注意力集中到各自的领域中.

 

2)连接点JoinPoint

程序运行中的某个阶段点.如某个方法的调用,或者异常的抛出等.

 

3)处理逻辑Advice

在某个连接点采取的逻辑.这里的逻辑有三种:

Around 在连接点前后插入预处理和后处理过程.

Before 在连接点前插入预处理过程.

Throw 在连接点抛出异常的时候进行异常处理.

 

4)切点PointCut

一系列连接点的集合,它指明处理逻辑Advice将在何在被触发.

 

 

Spring AOP实现机制

1、Spring内置AOP机制

基于动态AOP机制的实现.所谓动态AOP,其实就是动态Proxy模式,在目标对象的方法前后插入相应的代码.Spring AOP中的动态Proxy模式,是基于Java Dynamic Proxy(面向Interface)和CGLib(面向Class)的实现。

 

这是动态代理生成的函数代码,Proxy.newProxyInstance(obj.getClass().getClassLoader(), obj.getClass().getInterfaces(), this); 函数要求获取目标对象的所有接口方法,若目标对象不是基于接口的,则这种方式无法生成代理对象,所以有了CGLib的方式。即没有实现任何接口的类,就必须使用CGLib来动态构造代理类。而且CGLib构造的代理类是目标类的一个子类(需要实现MethodInterceptor接口等)

 

2、扩展AOP机制

可以使用自定义类加载器和实现字节码转换器

(具体参考:http://www.iteye.com/topic/1116696

 

3、AOP的配置方式

1)使用ProxyFactoryBean的代理

2)使用注解的aop代理,<aop:aspectj-autoproxy/>

3)使用配置文件的方式 <aop:config>

(具体实现参考:http://xuxiaolei.iteye.com/blog/414162

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值