`
SSailYang
  • 浏览: 313185 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Spring 2.0的新特性之@AspectJ

阅读更多
原来看过一本关于Spring的书《Spring 2.0宝典》,看完之后以为自己对Spring 2.0比较了解了,实际差的很远。最近看了InfoQ上的关于Spring 2.0新特性的文章后我才恍然大悟。下面结合我看Spring 2.0的开发参考手册和其它一些关于Spring 2.0的文章写一些我对于Spring 2.0新特性的理解。仅供参考。

        本文结合Spring 2.0开发参考手册来讲解。对于手册中有的东西我就不说了,其实这样的话也剩下不了多少我能说的了,我只是谈一下我在看手册的时候比较费劲的地方和我对这些地方的理解。

        首先@AspectJ并不是AspectJ,Spring AOP 框架支持@AspectJ只是说Spring支持用AspectJ注解的方式配置AOP。当然了,Spring 2.0也支持纯的AspectJ的应用,但这个不在本文的范围之内。

        Spring 2.0开发参考手册的<6.2.>部分的内容是关于@AspectJ的。你可以看Springframework.org上的英文文档,这样你可以看到最最新的东西。蛙眼上也有中文版的,也是最新的,当然会比最最新的旧一点点点循环。虽然翻译过来的手册和英文原版的差别很小,但这并不意味着没有差别。像原版中的有绿叶标示的部分,翻译过来的就没有。虽然绿叶标示的部分你可能看的不大懂(有些东西我就看不明白555),不过你一旦看懂可能就会获益匪浅,而且原版的味道最正。所以如果你的英语水平够的话我还是推荐大家看原版的手册。好了不废话了。下面开门见山,步入正题。

        要启用@AspectJ支持的话要在Spring配置文件中加入下面一句
 
  1. <aop:aspectj-autoproxy/>  

        接下来的工作基本上不用和配置文件打交道了。定义@Aspect、@Pointcut、Advice(@Before、@AfterReturning、@AfterThrowing、@After、@Around)都是在Java文件中进行的,而不再是XML配置文件了。注意前面有@的都是实实在在的注解。

        虽然手册中这一部分的代码块很多,实际上可以分为两个类文件,一个是对Pointcut的定义,另一个是Advice的定义。我觉得合在一起也不是不行,但是如果那么做的话无论从视觉上还是逻辑上讲都是比较乱的。

        无论是对Pointcut定义还是对Advice定义的类文件都要使用@Aspect注解。

        对Pointcut的定义更像是写配置文件,因为里面没有任何的逻辑代码,仅仅是声明方法(当是要有大括号)。从手册中我们可以看到,Pointcut的定义代码分为两行,第一行是Pointcut Expression,即符合这个表达式的方法(在当前的Spring AOP中只有方法调用能被当作Pointcut)就被作为是这个Pointcut;第二行是什么呢?说白了就是这个Pointcut的名字,只不过这个名字是一个严格定义的Java方法而已(觉得有一点的别扭是不是,我是觉得有点别扭,但不是很厉害,这样配置也算好看,呵呵)。
Pointcut的定义
 
  1. @Pointcut("within(com.xyz.someapp.web..*)")  
  2. public void inWebLayer() {}  

        光定义Pointcut是没有用的,还要定义相应的Advice(当然像事务性之类的应用你要使用框架提供的Advice,你接下来要做的是在Spring配置文件中做必要的配置,就像手册里举的那个Service层事务化的例子一样)。定义Advice时你要做的就是写出什么时候该调用什么方法。定义Advice也可以分为两部分(不是两行了),第一部分是告诉AOP框架什么时候执行这个Advice。有两种方法,一种是使用已经定义好的Pointcut的名字(就是那个像Java方法的名字);另一种方法是自己在定义一个Pointcut。似乎使用已经定义好的Pointcut时,方法名前面的包名是必须的,也挺麻烦的是吧,反正我觉得是。好了其他的关于Advice定义的东西我就不说了,自己看手册吧。

使用已经定义的Pointcut
 
  1. import org.aspectj.lang.annotation.Aspect;  
  2. import org.aspectj.lang.annotation.Before;  
  3.   
  4. @Aspect  
  5. public class BeforeExample {  
  6.   
  7.   @Before("com.xyz.myapp.SystemArchitecture.dataAccessOperation()")  
  8.   public void doAccessCheck() {  
  9.     // ...  
  10.   }  
  11.   
  12. }  

自己重新定义Pointcut
 
  1. import org.aspectj.lang.annotation.Aspect;  
  2. import org.aspectj.lang.annotation.Before;  
  3.   
  4. @Aspect  
  5. public class BeforeExample {  
  6.   
  7.   @Before("execution(* com.xyz.myapp.dao.*.*(..))")  
  8.   public void doAccessCheck() {  
  9.     // ...  
  10.   }  
  11.   
  12. }  

      好了,就写到这了。手册这一部分的后面一块(6.2.5-6.2.7)看的不大懂,所以我就不说了。如果有谁看明白了可以回复哈。
分享到:
评论

相关推荐

    spring2.0技术手册--林信良

    《Spring 2.0 技术手册》是继 Spring 1.0 之后的重要著作,作者林信良针对 Spring 框架在 2.0 版本中的新特性进行了深入剖析与讲解。本书不仅适合于已经有一定 Java 开发基础的学习者,也适用于想要深入了解 Spring ...

    spring2.0framework.doc

    Spring 2.0 是 Spring Framework 的一个重要里程碑,它引入了一系列的新特性和改进,极大地提升了框架的易用性和功能。在本文中,我们将深入探讨 Spring 2.0 的核心改进,尤其是控制反转(IoC)容器的增强以及面向切...

    spring2.0宝典源码

    此外,Spring2.0的AOP支持还包含对AspectJ的集成,使得基于注解的切面编程成为可能,降低了配置复杂性。 另一个显著变化是IoC(控制反转)的改进。Spring2.0增强了依赖注入,支持了构造器注入和setter注入,以及...

    spring2.0技术手册.PDF

    2.0版本引入了许多新特性,比如对Java 5(包括注解支持)、XML命名空间的改进,以及集成了一些流行技术比如AspectJ等。该版本还加强了对Web服务的支持,增加了声明式事务管理功能,并提供了更多用于数据访问的抽象层...

    Spring2.0宝典丛书08-10

    《Spring2.0宝典丛书》是一套深入探讨Spring 2.0框架的权威指南,旨在帮助开发者全面理解和掌握这一核心Java企业级开发框架。该系列书籍覆盖了Spring框架的各个方面,从基础概念到高级特性,为读者提供了丰富的学习...

    spring2.0技术手册 源代码例子

    《Spring 2.0 技术手册 源代码例子》是针对Spring框架2.0版本的一份详尽参考资料,其中包含了大量的实例代码,旨在帮助开发者深入理解和掌握...通过这些例子,开发者可以动手实践,加深对Spring 2.0特性和用法的理解。

    spring2.0升级到spring3.0.5的开发包

    从Spring 2.0升级到Spring 3.0.5是一个重要的版本迭代,因为每个新版本通常会引入新的特性和性能优化。 Spring 2.0是Spring框架的一个里程碑,它引入了AOP代理、JDBC抽象层、对JSF的支持以及对portlet的集成。然而...

    spring2.0参考手册

    Spring 2.0是Spring框架的一个重要里程碑,它在前一版本的基础上引入了许多新特性,进一步增强了该框架的灵活性和可扩展性。本参考手册详细阐述了这些改进,旨在帮助开发者更好地理解和应用Spring 2.0。以下是核心...

    spring2.0学习笔记+spring定时任务

    标题中的“spring2.0学习笔记+spring定时任务”表明了这个压缩包文件包含的是关于Spring框架2.0版本的学习资料,特别是关于Spring的定时任务功能。Spring是Java开发中最广泛应用的轻量级框架之一,它提供了一整套...

    罗时飞精通spring2.0源码

    《罗时飞精通Spring2.0源码》是一份深入解析Spring框架核心源码的教程,旨在帮助读者深入了解Spring的工作原理及其设计模式。Spring作为Java领域最广泛应用的轻量级框架,它的强大功能和灵活性使其在企业级开发中...

    spring2.0-reference_final_zh_cn.pdf

    Spring 2.0带来了许多新特性,包括改进的AOP支持、增强的JDBC支持、集成Hibernate和JDO的支持以及更强大的IoC容器功能等。 ### Spring的核心概念 #### 1. **依赖注入(Dependency Injection, DI)** 依赖注入是...

    spring2.0中文参考手册.pdf

    #### 二、Spring 2.0 新特性 - **控制反转(IoC)容器**: - **更简单的XML配置**:简化了配置文件的编写,提高了开发效率。 - **新的bean作用域**:除了原有的`singleton`和`prototype`作用域外,新增了更多灵活的...

    spring 2.0 中文用户指南

    依赖注入是Spring的核心特性之一,它使得组件之间的耦合度降低,提高了代码的可测试性和可维护性。DI允许开发者声明组件的依赖关系,而不用在代码中硬编码具体的实现类,Spring容器负责管理和组装这些组件。 3. **...

    Spring 2.0 开发参考手册

    2. Spring 2.0 的新特性 2.1. 简介 2.2. 控制反转(IoC)容器 2.2.1. 更简单的XML配置 2.2.2. 新的bean作用域 2.2.3. 可扩展的XML编写 2.3. 面向切面编程(AOP) 2.3.1. 更加简单的AOP XML配置 2.3.2. 对@...

    spring2.0和2.5 reference的中文版

    《spring2.0.chm》文档则专注于Spring 2.0版本,这个版本引入了许多新特性和改进,例如: - **AspectJ集成**:Spring 2.0开始支持全注解的AOP,通过AspectJ的编译时或运行时织入,使切面编程更加直观。 - **JSR-250...

    Spring_2.0_Samples

    《Spring 2.0 入门教程:深度解析与实践示例》 Spring框架作为Java企业级应用开发的基石,自2.0版本发布以来,以其强大的功能和易用性深受开发者喜爱。本资料集围绕Spring 2.0,旨在为初学者提供全面而深入的入门...

    Spring2.0中文教程

    #### 六、Spring2.0新增特性 - **改进的AOP支持**:增强了AOP的功能,使得编写切面更加简单。 - **新的JDBC支持**:引入了新的API,使得数据库操作更为简洁高效。 - **更好的测试支持**:Spring2.0提供了更强大的...

    Spring 2.0 中文用户指南

    DI是Spring的核心特性之一,它允许开发者将对象的创建和组装过程交给Spring管理,从而降低了组件之间的耦合。通过XML配置文件或注解方式,Spring可以控制对象的生命周期和装配,使得代码更加灵活和可测试。 三、...

    Spring2.0学习笔记

    【Spring2.0学习笔记】 在深入探讨Spring2.0的知识点之前,首先理解几个核心概念至关重要。Spring框架的核心设计理念是控制反转(Inversion of Control, IoC)和依赖注入(Dependency Injection, DI)。IoC意味着...

Global site tag (gtag.js) - Google Analytics