`

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

阅读更多
首先说说三个名词,面向对象、面向接口编程、面向切面编程(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
分享到:
评论

相关推荐

    五、Spring源码分析——Spring Aop

    《Spring AOP 源码分析》 在深入探讨Spring AOP之前,我们先要理解AOP(面向切面编程)的基本概念。AOP是一种编程范式,它将关注点分离,使得我们可以将横切关注点(如日志、事务管理、安全检查等)与业务逻辑解耦...

    Spring AOP 概念理解及@AspectJ支持

    **Spring AOP 概念理解** Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架的一个重要组成部分,它允许我们通过...理解和熟练运用Spring AOP及其@AspectJ注解是每个Spring开发者必备的技能之一。

    Spring AOP @AspectJ 入门实例

    @AspectJ是Spring AOP的一个扩展,它提供了一种更接近传统编程的注解驱动的方式来定义切面。接下来,我们详细讲解如何使用@AspectJ进行切面定义: 1. **创建切面类**:首先,你需要创建一个Java类,并使用`@Aspect`...

    spring AOP入门实例

    在这个入门实例中,我们将深入理解Spring AOP如何实现简单日志记录。 首先,AOP的核心概念包括切面(Aspect)、通知(Advice)、连接点(Join Point)、切入点(Pointcut)和织入(Weaving)。切面是AOP中的核心...

    简单spring aop 例子

    Spring AOP(面向切面编程)是Spring框架的重要组成部分,它提供了一种模块化和声明式的方式来处理系统中的交叉关注点问题,如日志、事务管理、安全性等。本示例将简要介绍如何在Spring应用中实现AOP,通过实际的...

    Spring AOP 16道面试题及答案.docx

    Spring支持两种AOP的实现方式:Spring AspectJ注解风格和Spring XML配置风格。使用AspectJ注解风格是最常见的,它允许开发者直接在方法上使用注解来定义切面。 Spring AOP中有五种不同类型的的通知(Advice): 1....

    spring-aop源码

    Spring AOP的源码主要集中在`org.springframework.aop`和`org.springframework.aop.framework`两个包下。`org.springframework.aop.aspectj.autoproxy`包包含了基于注解的AOP支持。`ProxyFactoryBean`和`...

    spring aop 源码解析

    在本文中,我们将深入探讨Spring AOP的源码,理解其内部机制和工作原理。 首先,我们需要知道Spring AOP的核心概念——切面(Aspect)、通知(Advice)、连接点(Join Point)、切入点(Pointcut)和代理(Proxy)...

    spring AOP 实例(@AspectJ)

    一个基于@AspectJ的spring2.0 AOP应用实例,很小很简单,没有任何额外信息,最适合AOP入门学习。使用log4j打印信息。把项目直接import进myeclipse就可以使用啦......

    spring-aop.pdf 源码电子书

    标题和描述中提到的是关于Spring AOP源码的电子书。Spring AOP(Aspect-Oriented Programming)是Spring框架的一个重要组成部分,它支持面向切面编程的实践,是为了解决面向对象编程中的横切关注点问题而设计的。在...

    Spring AOP的AspectJ支持jar包

    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实例(XML+@AspectJ双版本解析+源码+类库)

    在Java世界中,Spring框架以其强大的功能和灵活性深受开发者喜爱,尤其在面向切面编程(AOP)方面,Spring提供了两种主要的实现方式:XML配置和@AspectJ注解。本篇文章将深入探讨这两个版本的AOP实现,并结合源码...

    Spring Aop四个依赖的Jar包

    Spring AOP,全称Aspect-Oriented Programming(面向切面编程),是Spring框架的一个重要模块,它通过提供声明式的方式来实现面向切面编程,从而简化了应用程序的开发和维护。在Spring AOP中,我们无需深入到每个...

    Spring AOP面向方面编程原理:AOP概念

    通过上述介绍,我们可以看出Spring AOP不仅提供了丰富的AOP特性,还极大地方便了开发者的使用。它通过非侵入性和轻量级的设计理念,使得开发者能够轻松地将诸如日志记录、事务管理等功能添加到现有的系统中,从而...

    @AspectJ配置Spring AOP,demo

    `springAOP2`可能是一个包含具体示例代码的目录。`基于@AspectJ配置Spring AOP之一 - 飞扬部落编程仓库-专注编程,网站,专业技术.htm`和其关联的`_files`目录可能包含了一个详细的教程或演示如何配置和运行@AspectJ的...

    Spring Aop 引用新功能 源码

    "Introduction"是Spring AOP提供的一种特殊的通知类型,它允许我们向现有的目标对象动态地添加新的接口和方法,而无需修改目标对象的源码。这在处理如日志、事务管理等跨切面关注点时非常有用。例如,我们可以向一个...

    Java进阶之SpringAOP源码深度剖析共17页.pd

    通过对Spring AOP源码的深入分析,我们可以了解到其内部是如何通过代理模式和反射技术实现对方法调用的拦截,以及如何解析和执行切点表达式,理解通知的执行流程等。这些深入理解对于优化性能、排查问题以及自定义...

    spring AOP依赖三个jar包

    3. spring-aspects-4.0.2.RELEASE.jar:这是Spring框架的一部分,包含了Spring AOP的相关实现和扩展,包括Spring的代理模型(proxy-based model)以及与AspectJ的集成。在这个版本中,Spring AOP支持基于注解的切面...

    spring aop 五个依赖jar

    5. **aopalliance-1.0.jar**:AOP Alliance是一个库,定义了一些通用的AOP接口,使得不同的AOP框架(如Spring AOP和AspectJ)可以互操作。它包含了一些基本的AOP概念,如Advisor、Pointcut和Proxy等,是连接不同AOP...

    SpringAOP+AspectJ

    Spring AOP和AspectJ提供了强大的工具来管理横切关注点,使我们的代码更加模块化和易于维护。在实际项目中,可以根据需求选择适合的AOP实现方式,以实现更高效、更优雅的代码结构。通过深入理解AOP原理和实践,我们...

Global site tag (gtag.js) - Google Analytics