做一个合格的程序猿之浅析Spring AOP源码(十二) AOP概念理解
来源:互联网 发布:如何删掉淘宝评价 编辑:程序博客网 时间:2024/06/05 03:06
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不是很神秘~
- 做一个合格的程序猿之浅析Spring AOP源码(十二) AOP概念理解
- 做一个合格的程序猿之浅析Spring AOP源码(十八) Spring AOP开发大作战源码解析
- 做一个合格的程序猿之浅析Spring AOP源码(十四) 分析ProxyFactoryBean
- 做一个合格的程序猿之浅析Spring AOP源码(十六) 分析ProxyFactory
- 做一个合格的程序猿之浅析Spring AOP源码(十七) Spring AOP开发大作战
- 做一个合格的程序猿之浅析Spring AOP源码(十五) 分析JdkDynamicAopProxy的invoke方法
- 浅析Spring AOP源码(十二) AOP概念理解
- 做一个合格的程序猿之浅析Spring AOP源码(十三) jdk的动态代理和cglib的代理
- 做一个合格的程序猿之浅析Spring IoC源码(二)BeanFactory初始化
- 做一个合格的程序猿之浅析Spring IoC源码(四)分析BeanPostProcessor(1)
- 做一个合格的程序猿之浅析Spring IoC源码(五)再谈BeanPostProcessor(2)
- 做一个合格的程序猿之浅析Spring IoC源码(六)BeanFactoryPostProcessor
- 做一个合格的程序猿之浅析Spring IoC源码(八)了解BeanFactoryAware
- 做一个合格的程序猿之浅析Spring IoC源码(九)了解BeanNameAware
- 做一个合格的程序猿之浅析Spring IoC源码(二)BeanFactory初始化
- 做一个合格的程序猿之浅析Spring IoC源码(四)分析BeanPostProcessor(1)
- 做一个合格的程序猿之浅析Spring IoC源码(十)Spring Bean的初始化顺序
- 做一个合格的程序猿之浅析Spring IoC源码(十一)Spring refresh()方法解析之一
- JSON字符串转javabean,报net.sf.ezmorph.bean.MorphDynaBean cannot be cast to.....
- 在win7下安装IIS 7后打开自己的项目之后会出现500.19错误
- 使用CSS3 Media Queries实现网页自适应
- Spring的事务及五种配置方式
- Java 回顾笔记_基本数据类型对象包装类
- 做一个合格的程序猿之浅析Spring AOP源码(十二) AOP概念理解
- unity3d中用2D背景当作图片
- 与LSGO一起学“第1章 初识C++(1.1 C++简介)”
- 关于分类树节点编辑成功后刷新树并展开操作节点
- balabala半年了
- Linux服务器安装Redis
- SharedPreferences方便存取工具类
- wget 命令用法详解
- 生产环境中centOS7最简版安装