首先说说三个名词,面向对象、面向接口编程、面向切面编程(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
分享到:
相关推荐
一个基于@AspectJ的spring2.0 AOP应用实例,很小很简单,没有任何额外信息,最适合AOP入门学习。使用log4j打印信息。把项目直接import进myeclipse就可以使用啦......
主要对Spring AOP的相关概念和简单的静态代理、动态代理以及常见的几种AOP配置方式做总结学习。主要包括:1. AOP的常见概念 2. 静态代理 3. jdk动态代理 4. Aspectj and Aspectjweaver 5. **aop-config** 6. CGLIB ...
Spring AOP的AspectJ支持jar包; 包括: com.springsource.net.sf.cglib-2.2.0.jar com.srpingsource.org.aopalliance-1.0.0.jar com.srpingsource.org.aspectj.weaver-1.68.RELEASE.jar
本文深入分析了Spring AOP的实现机制,让读者能够更好地理解和应用这一强大的编程范式。 Spring AOP是基于代理模式实现的,主要包括动态代理、通知(Advice)、切点(Pointcut)、切面(Aspect)和连接点(Join ...
@AspectJ配置Spring AOP,文档,Aspect jar包, 可运行的demo,
spring aop 自定义切面示例 aspectj 需要相应的架包支持
Spring AOP之基于AspectJ注解总结与案例 ,具体效果和过程看博文 http://blog.csdn.net/evankaka/article/details/45394409
NULL 博文链接:https://rain1109.iteye.com/blog/1838100
我们知道,Spring支持多种AOP方式,Spring自己的基于代理的AOP和AspectJ的基于编织(weaving)的AOP。如果一个类实现了一个或多个接口,那么Spring就会使用默认的JDK动态代理,如果没有实现任何接口,就会使用cglib...
aspectj的jar spring使用aop需要的jar 使用aop
NULL 博文链接:https://quicker.iteye.com/blog/670885
以公司订单管理的模型为例(大部分步骤和业务了逻辑已经删除,只保存AOP注解这一部分)Spring AOP
Spring4.3.7的AOP依赖包-AspectJ
Spring 使用AspectJ 实现 AOP(基于xml文件、基于注解)
When to use Spring AOP and AspectJ AOP? Expert author Ramnivas Laddad shows how to combine technologies such as Spring, Hibernate, Swing, and JDBC with AspectJ. The book fully covers the latest ...
里面包括4个例子:(1)Spring实现AOP方式之一:基于XML配置的Spring AOP (2)Spring实现AOP方式之二:使用注解配置 Spring AOP (3)Spring AOP : AspectJ Pointcut 切点 (4)Spring AOP : Advice 声明 (通知注解)
学习Spring开发的AOP面向切面编程时所需要的jar包,包括com.springsource.net.sf.cglib-2.2.0.jar com.springsource.org.aopalliance-1.0.0.jar com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar
一、 实验目的 1、了解AOP的概念和作用; 2、理解AOP中的相关术语; 3、了解Spring中两种动态代理方式的区别; 4、掌握基于XML和注解的AspectJ开发。 二、 实验内容 1、按图所示的类图结构,设计接口及其实现类,并...
Spring AOP测试代码
目前最流行的 AOP 框架有两个,分别为 Spring AOP 和 AspectJ。Spring AOP 使用纯 Java 实现,不需要专门的编译过程和类加载器,在运行期间通过代理方式向目标类植入增强的代码。 课程内容非常详细的介绍Spring ...