浅析Spring AOP源码(十二) AOP概念理解

 AOP(Aspect-Oriented Programming) 面向切面的编程,在我们平时的开发过程中,AOP其实用的地方总结有:

     ①用来做日记的处理

     ②方法的调用统计

     ③业务层面的读写分离(例如自定义的Annotation+AOP可以实现切换数据源)

     ④自定义权限拦截器

  

spring框架中,AOP则发挥了不少功效,例如spring的事务,这应该是AOP在spring框架中的最好体现了吧~


有几个问题:

①Spring AOP会提高程序性能吗?

     AOP编程是不会提高程序的性能的,相反,AOP不很大程度上影响程序性能就很不错了,毕竟AOP部分的代码没有单独开一个线程去单独执行,没有影响主进程


②Spring Aop的底层原理?

     Java的动态代理或者cglib的动态代理


③spring怎么选择使用java原生的动态代理还是选用cglib的动态代理呢?

     根据到代理的类是否实现了接口,如果有接口默认用原生的动态代理,否则只有选用cglib,关于两者的性能,因为本人没有自己测试过,不敢人云亦云。大家借鉴:

http://www.cnblogs.com/haiq/p/4304615.html


④AOP有规范吗?

AOP是有规范的,叫做AOP联盟,在java方面的实际体现:




最后大家再了解一些AOP的核心概念


 1)Advice(通知)定义你需要在切面做什么事情,即你要告诉AOP你要干什么?(例如切换数据源,做日记等等),通知具体分(前置通知(例如入参的格式验证),后置通知,环绕通知)

 2)Pointcut(切点)定义你在哪里切,即你需要告诉AOP在哪个类中的那个方法中切,因为不是所有的方法都需要走一下AOP的,所以会影响性能


3)Advisor(通知器)有了上述两个概念,你需要将上述的两个概念黏合起来,这就像一瓶胶水,黏合好,就知道在哪个地方需要做什么事情,也就说如果将Advice传给spring理论上就可以动态代理了~


好了,这就是AOP的最基本概念,其实AOP不是很神秘~



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值