`
jiagou
  • 浏览: 2606667 次
文章分类
社区版块
存档分类
最新评论

Spring3.0中的AOP注解配置

 
阅读更多

转自:http://zywang.iteye.com/blog/974226

使用@AspectJ标签

  1. 在配置文件中添加<aop:aspectj-autoproxy/>注解
  2. 创建一个Java文件,使用@Aspect注解修饰该类
  3. 创建一个方法,使用@Before、@After、@Around等进行修饰,在注解中写上切入点的表达式

说明:上述Java文件创建好后,需要将其在Spring的容器中进行声明,可以在配置文件中定义<bean/>节点,也可以使用@Component组件进行修饰

示例:

Java代码收藏代码
  1. importorg.aspectj.lang.ProceedingJoinPoint;
  2. importorg.aspectj.lang.annotation.After;
  3. importorg.aspectj.lang.annotation.AfterThrowing;
  4. importorg.aspectj.lang.annotation.Around;
  5. importorg.aspectj.lang.annotation.Aspect;
  6. importorg.aspectj.lang.annotation.Before;
  7. importorg.springframework.stereotype.Component;
  8. /**
  9. *基于注解的AOP日志示例
  10. *@authorZYWANG2011-3-24
  11. */
  12. @Component
  13. @Aspect
  14. publicclassAopLog{
  15. //方法执行前调用
  16. @Before("execution(*com.zywang.services.impl.*.*(..))")
  17. publicvoidbefore(){
  18. System.out.println("before");
  19. }
  20. //方法执行后调用
  21. @After("execution(*com.zywang.services.impl.*.*(..))")
  22. publicvoidafter(){
  23. System.out.println("after");
  24. }
  25. //方法执行的前后调用
  26. @Around("execution(*com.zywang.services.impl.*.*(..))")
  27. publicObjectaround(ProceedingJoinPointpoint)throwsThrowable{
  28. System.out.println("beginaround");
  29. Objectobject=point.proceed();
  30. System.out.println("endaround");
  31. returnobject;
  32. }
  33. //方法运行出现异常时调用
  34. @AfterThrowing(pointcut="execution(*com.zywang.services.impl.*.*(..))",throwing="ex")
  35. publicvoidafterThrowing(Exceptionex){
  36. System.out.println("afterThrowing");
  37. System.out.println(ex);
  38. }
  39. }

上面这段代码中多次使用了重复的切入点,这种情况下,可以使用@Pointcut标注,来修改一个切入点方法(这个方法不需要参数和方法体),然后就可以在@Before等标注中引用该方法作为切入点,示例如下:

Java代码收藏代码
  1. importorg.aspectj.lang.ProceedingJoinPoint;
  2. importorg.aspectj.lang.annotation.Around;
  3. importorg.aspectj.lang.annotation.Aspect;
  4. importorg.aspectj.lang.annotation.Before;
  5. importorg.aspectj.lang.annotation.Pointcut;
  6. importorg.springframework.stereotype.Component;
  7. /**
  8. *基于注解的AOP日志示例
  9. *@authorZYWANG2011-3-24
  10. */
  11. @Component
  12. @Aspect
  13. publicclassAopLog{
  14. @Pointcut("execution(*com.iflysse.school.services.impl.*.*(..))")
  15. publicvoidpointcut(){}
  16. //方法执行前调用
  17. @Before("pointcut()")
  18. publicvoidbefore(){
  19. System.out.println("before");
  20. }
  21. //方法执行的前后调用
  22. @Around("pointcut()")
  23. publicObjectaround(ProceedingJoinPointpoint)throwsThrowable{
  24. System.out.println("beginaround");
  25. Objectobject=point.proceed();
  26. System.out.println("endaround");
  27. returnobject;
  28. }
  29. }


分享到:
评论
1 楼 zhaoshijie 2012-11-20  

请问 这种方式可以拦截到目标方法:ClassPathXmlApplicationContext beanApp = new ClassPathXmlApplicationContext(
                "applicationContext.xml");



但是作为web项目在web.xml中加载的spring配置文件 怎么拦截不到任何目标方法呢?知道的话麻烦告知下  ,QQ:619370209,谢谢了 。

相关推荐

    spring 3.0 aop 实例

    4. **配置AOP**:在Spring 3.0中,可以使用XML配置或者注解方式来声明AOP。XML配置通过`&lt;aop:config&gt;`和`&lt;aop:advisor&gt;`等元素定义切入点和通知。注解方式则更加简洁,如`@Aspect`定义切面,`@Pointcut`定义切入点,...

    spring3.0 jar包

    在Spring 3.0中,注解的应用更加广泛,如@Controller、@Service、@Repository和@Transactional等,极大地简化了XML配置,提高了开发效率。开发者可以通过注解直接在类或方法上声明其在应用程序中的角色和行为。 3....

    spring3.0jar包

    Spring 3.0 是一个里程碑式的版本,在Java企业级应用开发领域中占据着核心地位。这个版本的发布引入了许多新特性、改进和优化,旨在提升开发者的工作效率和应用程序的可维护性。Spring 框架以其强大的依赖注入...

    spring3.0 全部jar包

    在下载的"spring3.0 全部jar包"中,"dist"文件夹可能包含了所有Spring 3.0框架运行所需的库文件,包括核心容器、AOP、ORM、Web、Test等多个模块的jar包。这些jar文件是构建和运行Spring 3.0应用的基础,它们包含了...

    Spring3.0中文帮助文档

    以上只是Spring 3.0中部分关键特性和功能的概述,实际的中文帮助文档会详细解释这些概念,提供使用示例,并指导开发者如何在项目中有效地应用Spring框架。通过深入学习和实践,开发者能够充分利用Spring 3.0的优势,...

    Spring3.0AOP所需jar包

    标题"Spring3.0AOP所需jar包"指的是为了在Spring 3.0及以上版本中使用AOP功能,我们需要额外添加一些jar包到项目中。这些jar包通常包括Spring AOP模块本身以及其依赖的相关库。Spring框架的每个主要模块都有对应的...

    spring3.0完整框架

    这个压缩包中的"spring3.0"文件很可能包含了所有需要的Spring 3.0框架相关的jar包,包括核心库、AOP、Web、MVC等模块的jar,是搭建Spring 3.0环境所必需的。开发者可以通过这些jar包快速构建基于Spring 3.0的应用,...

    spring 3.0 jar 包

    5. **XML配置简化**:Spring 3.0引入了基于注解的配置,可以减少XML配置文件的使用,使得配置更加直观和简洁。 6. **数据访问集成**:包括对JDBC、Hibernate、JPA等ORM框架的深度集成,提供统一的数据访问抽象,...

    spring3.0轻量级框架

    在Spring 3.0中,对依赖注入(Dependency Injection, DI)进行了优化,支持了基于注解的配置,开发者可以使用@Component、@Service、@Repository和@Controller等注解来声明bean,并通过@Autowired自动装配依赖。...

    spring 3.0 jar包

    SpEL可以在配置中、AOP切点和视图层等多个地方使用,增加了灵活性。 7. **消息支持**: Spring 3.0添加了对JMS(Java Message Service)的全面支持,包括消息监听容器和模板,便于构建消息驱动的应用程序。 8. **...

    spring3.0的API

    1. **Bean表达式语言(Bean Expression Language, BEML)**:Spring 3.0引入了基于Groovy的表达式语言,允许在配置中进行更复杂的逻辑判断和属性设置。 2. **泛型注解支持**:Spring 3.0开始支持泛型类型的注解,使...

    spring3.0发行版

    面向切面编程(AOP)在Spring 3.0中也得到了强化。新增的@Aspect注解使得定义切面更加直观,而@AfterReturning、@AfterThrowing等注解则方便了后置通知的编写。此外,Spring 3.0还支持了基于注解的切点表达式,让...

    Spring3.0中文版

    4. **AOP增强**:在Spring3.0中,AOP的使用更加方便,可以通过注解定义切面,减少了编写代理代码的工作。同时,增强了切点表达式(Pointcut Expression)的功能。 5. **SpringMVC**:作为Spring框架的Web层解决方案...

    spring3.0MVC 含jar包

    Spring 3.0中,AOP可以用于实现如日志记录、事务管理等功能,提高代码的复用性和可维护性。@Aspect和@Pointcut注解定义切面和切点,@Before、@After、@Around等注解定义通知行为。 八、数据绑定与验证 Spring 3.0...

    Spring3.0Jar包

    3. **注解驱动开发**:Spring 3.0 大量引入了注解,如 `@Autowired`、`@Service`、`@Repository` 和 `@Controller`,这些注解简化了配置文件,使得基于 XML 的配置可以被注解替代,降低了配置复杂性。 4. **Spring ...

    Spring 3.0就这么简单.pdf

    在Spring 3.0中,DI可以通过XML配置、注解或Java配置三种方式进行。 2. **AOP(Aspect Oriented Programming, 面向切面编程)**:Spring 3.0对AOP进行了优化,支持更多样化的切面定义,包括基于注解的切面,使得...

    spring3.0 源码

    注解配置的增强使得代码更加简洁,降低了XML配置的复杂性。`@Component`、`@Service`、`@Repository`和`@Controller`等注解用于标记组件,而`@Autowired`则实现了依赖注入。 二、AOP(Aspect Oriented Programming...

    spring3.0学习

    标题 "spring3.0学习" 暗示我们要探讨的是Spring框架的一个重要版本——Spring 3.0。Spring是Java企业级应用开发中广泛使用的开源框架,它简化了依赖注入、事务管理、AOP(面向切面编程)等多个方面的工作。在Spring...

    Spring3.0+myBatis3.0

    《Spring3.0与myBatis3.0整合详解》 在现代Java开发中,Spring框架因其强大的依赖注入和面向切面编程能力,已经成为企业级应用的首选。而myBatis作为一款轻量级的持久层框架,以其灵活的SQL映射和简单的对象关系...

Global site tag (gtag.js) - Google Analytics