Spring实现AOP源码分析
来源:互联网 发布:毕业论文怎么写 知乎 编辑:程序博客网 时间:2024/06/02 17:36
Aop又叫面向切面编程,它的作用就是管理分散在整个应用中的变动。这句话理解起来有点抽象,举个例子,比如我想在多个方法中加一些打印日志,看下这些方法耗时如何,这些日志信息就是程序中的变动,而且是分散在各个不同的方法中的。如果我一个一个方法中去加日志信息的话,方法数量少的情况还可以勉强维护,如果数量多的话,维护起来就比较头疼了。这个时候我们就可以使用Aop来统一管理这些日志信息,后期的维护也就相对轻松的多了。
Aop实现的核心,总结起来就是拦截和代理。Aop定义了三大核心属性,分别是基础,切面和配置。基础就是需要实现实现增强的目标对象,不过项目中一般都是使用Aop来对目标方法实现增强。这个增强可以理解为增加一些其它的功能,比如上文提到的打印日志信息等。而切面的作用就是这个增强,在原有的目标对象身上增加一些额外的功能。配置的作用就是把基础和切面结合起来。
介绍完了Aop的定义,接着再来看下Aop的实现。Aop的实现中有三个接口,分别是Advice(通知),Pointcut(切点)和Advisor(通知器)。其中Advice的作用是对目标对象实现增强。虽然有了增强的功能,但是要在哪里进行增强的织入呢,这个时候就要用到Pointcut,Pointcut中定义了需要实现增强的方法的集合,然后根据正则表达式或者方法名进行匹配,确认具体要实现增强的目标方法。最后通过Advisor将Advice和Pointcut结合起来。
Aop的基本属性初步介绍了一下,下面通过一个简单的Aop应用来开始Aop实现的源码分析。
定义一个名为Student的接口:
实现类:
我们想在不改变源码的情况下,在addStudent方法的输出语句前后分别加入其它功能,比如在打印语句前后加入其它的打印信息,这中情况就是Aop的典型应用场景。根据Aop的定义,addStudent就是目标方法,需要对其实现增强功能。既然前后都都要实现增强,那么我们可以分别实现MethodBeforeAdvice接口和AfterReturningAdvice接口。这两个接口都继承Advice接口,目的就是对目标方法实现增强。
前置增强:
后置增强:
可以适当的加入些拦截器:
现在目标方法有了,增强也有了,需要将目标方法和增强结合起来,实现对目标方法的增强,这个时候就需要一个配置了。
配置:
这些配置都配置在Spring默认的配置文件中。至于配置中相关配置项的意义及作用,后面进行源码分析的时候会逐一进行解释。
测试类:
运行结果如下:
关于Spring中Aop的基本使用方式就暂且解释到此,下一篇中将会开始Aop运行原理的源码分析。
未完待续。。。。。。
- Spring源码分析:实现AOP- -
- Spring实现AOP源码分析
- spring aop源码分析
- Spring Aop源码分析
- spring aop 源码分析
- 基于Spring源码分析AOP的实现机制
- Spring AOP源码分析(拦截器调用的实现)
- Spring源码分析——AOP实现(1)
- Spring源码分析——AOP实现(2)
- Spring AOP 源码分析 part4 :拦截器的实现
- spring源码分析之aop
- Spring AOP 源码实现过程
- Spring源码分析----AOP概念(Advice,Pointcut,Advisor)和AOP的设计与实现
- Spring源码分析----AOP概念(Advice,Pointcut,Advisor)和AOP的设计与实现
- Spring源码分析-深入浅出AOP(图文分析)
- spring源码分析,重新认识spring 二(aop实现详细分析)
- 理解Spring AOP 原理(三)Spring AOP 源码分析
- Spring AOP介绍及源码分析
- ExtJs 同步与异步请求
- Android学习笔记-SharedPreferences
- 八大排序
- 捕获异常 try...catch{}
- 仿豆果美食tableview的展开和收缩效果
- Spring实现AOP源码分析
- 从Fedora22升级到Fedora23
- hdoj 2017 字符串统计 (水)
- Handler
- 元素
- Tkinter -- 面向对象方式简单封装
- 程序员的自我修养——目标文件
- Leetcode 148. Sort List
- hdu 1875(畅通工程续)