spring-aop

     Aop(Aspect Orient Programming)面向切面编程。为什么要用Aop?假如项目中已经写好了业务代码,但是客户突然提出要加事务代码,还要加权限控制代码,还要加入日志代码,那么这种情况下怎么办。项目中的方法成千上万,逐个添加显然是不太现实的,最好是将这部分代码抽象成方法添加到项目中,那么问题又来了,怎么调用呢,如果要逐个添加调用那么这么做也没什么意义,最好是我们定义好方法,当那些需要添加事务、权限、日志的方法执行时,系统自动调用我们的事务方法、权限方法、日志方法,而Aop就可以帮我们做到,Aop专门用于处理系统中分布于各个模块的方法的交叉点问题,所谓的交叉点指的就是像事务等很多方法都可能用到的地方,也就是这些方法的交叉点。
     Aop是一种编程思想,那么自然就有框架来实现它,Aop框架分为两类,编译时增强框架和运行时增强框架,编译时增强框架如AspectJ,是在编译时就对目标类(目标方法 )进行了增强,通过反编译可以发现,目标方法所在的类的字节码文件里增加了很多内容。而运行时增强框架如springAop,是在程序运行时对目标类生成代理,所以目标类的字节码文件不会发生任何改变,目标方法执行时实际执行的是代理类的方法。(spring的动态代理既可以是jdk的动态代理,与目标类继承相同的接口。也可以是cglib的动态代理,生成目标类的子类),一般来说,编译时增强框架性能要优于运行时增强框架,因为他们只需要一次增强(直接改变.class文件)而不需要每次运行时都进行动态增强,但是缺点也是很明显的,要依赖特殊的编译器才能处理。
     Aop的基本概念:切面:以事务为例,把项目中所有添加了事务的方法都看作一个点,把这些点平铺开来形成一个平面,那么就相当于这个平面横切了所有的方法,也就是所谓的切面,这个切面也就是这些方法的交叉关注点,也就是事务功能。连接点:springAop中的连接点总是方法的调用,简单理解就是方法。增强处理:仍以事务为例,spring在程序运行时动态的为需要添加事务的类生成代理对象,那么代理对象的方法就具备了事务功能,那么增强处理作为一个名词理解就是新添加的事务功能,总而言之增强处理可以理解为程序中添加的新功能。切入点:符合某种规则的连接点,以事务为例,就是那些需要添加事务功能的方法,spring会为切入点织入增强处理。目标对象:被织入增强处理的对象。Aop代理:简单理解为增强处理+目标对象=Aop代理。织入:将增强处理添加到目标对象并声称Aop代理的过程叫做织入。
     Aop编程最大的优势在于:被代理的类完全可以是纯净的bean,而且代理对于该bean来说是透明的,所以完全可以对bean进行无限制的代理,Spring的Aop是基于动态代理来实现的,因此也具备这种特性。

spring-aop的几种织入形式
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值