文档章节

Spring AOP源码分析(一)AOP介绍和aspectj、SpringAOP入门

乒乓狂魔
 乒乓狂魔
发布于 2015/02/07 10:21
字数 803
阅读 904
收藏 5
首先说说三个名词,面向对象、面向接口编程、面向切面编程(Aspect Oriented Programming 即AOP)。
针对java来说
面向对象:是对现实世界的描述,是后两者的基础,大前提。
面向接口编程:接口就是一组规则的集合,这组规则可以有不同的实现方式。如JDBC,它本身仅仅是接口规范,不同的数据库有不同的实现,我们通过JDBC这样的接口编程,就无需关心我们使用的是哪种数据库,可以方便的实现数据库的切换而不必改动代码。
面向切面编程:是对面向对象的补充,主要应用的场景为:
              (1):权限拦截
              (2):方法监控
              (3):日志记录
虽然这些场景有时可以使用其他方案解决,从侵入性方面来看,AOP绝对是一个好的方案。

然后又是几个大名词:AOP、Spring AOP和aspectj和jboss AOP
AOP:首先是AOP联盟约定了几个概念,如Joinpoint、Pointcut、Advice等。
              (1) Pointcut:拦截点表达式,
              (2)Joinpoint:符合上述Pointcut表达式的一个具体的拦截点。他们的关系就
                            像正则表达式和符合该正则表达式的对象一样。
              (3)advice:如拦截到对应的某个方法后,我们要做写什么?advice就是拦截后
                        要执行的动作。
      总结下来就是说,在符合所有pointcut的拦截点上执行advice动作。
aspectj和jboss AOP对于上述约定进行了具体的实现,独立与其他。

Spring AOP:将aspectj的实现加入到Spring大军中,使得AOP与Spring可以更好的融合起来为开发提供方便的服务。

接下来,我们就需要从aspectj单独来看看AOP,然后就是SpringAOP的使用。最后就是本系列的重点,SpringAOP是如何通过aspectj来实现AOP编程的。

从aspectj单独来看看AOP:
学习方式一:看aspectj的官方文档   
            http://www.eclipse.org/aspectj/doc/released/progguide/index.html
学习方式二:已经有人总结了aspectj的aop系列,参见:     
             http://blog.csdn.net/zl3450341/article/category/1169602
我在这里只说下,注意的事项。
使用eclipse来开发aspectj项目,需要安装AJDT插件,目前最新的AJDT插件为2.2.3,支持的eclipse版本如下,后面为安装插件的地址:
Eclipse 4.3 Kepler-》 http://download.eclipse.org/tools/ajdt/43/update
Eclipse 4.2 and 3.8 Juno -》 http://download.eclipse.org/tools/ajdt/42/update
目前还不支持最新的Eclipse 4.4 Luna。
所以先去上面学习地址中先去体验一把aspect的AOP,然后你才能更好的理解SpringAOP。

使用SpringAOP:采用xml配置和注解两种方式来使用Spring Aop。
要解决的第一个问题就是,pom的依赖

<dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-aop</artifactId>
         <version>4.0.5.RELEASE</version>
   </dependency>
   <dependency>
	<groupId>org.aspectj</groupId>
	<artifactId>aspectjweaver</artifactId>
	<version>1.8.2</version>
   </dependency>

aspectjweaver是aspectj对AOP的实现。spring-aop是对aspectj进行Spring的封装和引入。
方式一:采用xml配置的方式
具体的例子可以详细参见这篇文章:http://www.iteye.com/topic/336873
方式二:采用注解配置的方式
可以参见http://tonl.iteye.com/blog/1966822

© 著作权归作者所有

共有 人打赏支持
乒乓狂魔
粉丝 1002
博文 105
码字总数 271356
作品 0
长宁
程序员
2014-03-11 Spring的学习(3)------面向切面编程(AOP)

AOP概念 首先让我们从一些重要的AOP概念和术语开始。这些术语不是Spring特有的。不过AOP术语并不是特别的直观,如果Spring使用自己的术语,将会变得更加令人困惑。 切面(Aspect):一个关注...

查封炉台
2014/03/11
0
0
Spring系列之Spring框架和SpringAOP集成过程分析(十)

在开始这个系列之前大家先想一下我们是怎么在项目中使用SpringAOP的(这里的分析都是基于AspectJ注解的)。我们需要在我们的Spring配置文件中引入SpringAOP的命名空间和标签,然后定义切面Bea...

木叶之荣
06/18
0
0
使用Spring进行面向切面编程(AOP)

转载于http://www.blogjava.net/supercrsky/articles/174368.html 文章太长,写的很好,没看完,转过来慢慢理解,品味 简介 面向切面编程(AOP)提供另外一种角度来思考程序结构,通过这种方...

zmf
2014/09/04
0
0
Spring中的AOP(一)——AspectJ的基本使用

AOP(Aspect Orient Programming),也就是面向切面编程,作为面向对象编程的一种补充,当前已经成为一种比较成熟的编程思想,其实AOP问世的时间并不长,甚至在国内的翻译还不太统一(另有人...

摆渡者
2014/03/13
0
1
Aspectj与Spring AOP比较

1、简介 今天有多个可用的 AOP 库, 它们需要能够回答许多问题: 是否与用户现有的或新的应用程序兼容? 在哪里可以实现 AOP? 与自己的应用程序集成多快? 性能开销是多少? 在本文中, 我们将...

沈渊
04/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

[Hive]JsonSerde使用指南

注意: 重要的是每行必须是一个完整的JSON,一个JSON不能跨越多行,也就是说,serde不会对多行的Json有效。 因为这是由Hadoop处理文件的工作方式决定,文件必须是可拆分的,例如,Hadoop将在...

Mr_yul
23分钟前
0
0
54:mysql修改密码|连接mysql|mysql常用命令

1、mysql修改密码: root用户时mysql的超级管理员,默认mysql的密码是空的,直接可以连接上去的,不过这样不安全; 注释:为了方便的使用mysql,需要把mysql加入到环境变量里; #后续自己输入mys...

芬野de博客
30分钟前
0
0
鼠标单击复制粘贴标签中的内容

<span ref="spanContentOne" id="spanContentOne" style="font-size: 14px;">或许不是最亮眼,总比瞎买强一点</span><!--<input type="button" @click="copyClick('1')" value="复制" />-......

帝子兮
35分钟前
0
0
使用axel多线程疯狂下载

在Linux中比较常见见的下载工具是curl和wget,但是下载比较大的文件两者都不支持多线程, 断点续传的作用不见得能发挥到最大。今天介绍一个axel工具,开启多线程疯狂下载。 安装 Fedora/Cen...

linuxprobe16
37分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部