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

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,谢谢了 。

相关推荐

    Spring3.0MVC注解+SringJdbcDaoSupport案例

    Spring3.0MVC注解+SringJdbcDaoSupport案例,前端包括批量伤处,SpringAop声明式事务控制的配置等信息

    Spring AOP配置源码

    两行为开启spring的注解配置 &lt;aop:aspect id="aspect" ref="logIntercepter"&gt; 引入具体的AOP操作类 &lt;aop:pointcut expression="execution(* com.spring.service..*(..))" id="pointCut"/&gt;声明一个切入点,注意...

    SpringBoot中的AOP+自定义注解(源代码)

    SpringBoot 中的 Aop + 自定义注解 1. @AspectJ 1.1 `@AspectJ` 切面类 1.2 `@Pointcut` 创建切入点 1.3 通知 1.4 Spring AOP 和 AspectJ AOP 有什么区别? 2. 在 SpringBoot 中使用 Aop 功能 2.0 创建一个...

    Spring+3.x企业应用开发实战光盘源码(全)

     第4章:讲解如何在Spring配置文件中使用Spring 3.0的Schema格式配置Bean的内容,并对各个配置项的意义进行了深入的说明。  第5章:对Spring容器进行解构,从内部探究Spring容器的体系结构和运行流程。此外,我们...

    Spring3中配置DBCP,C3P0,Proxool,Bonecp数据源

    在Spring3中配置数据源,包括DBCP,C3P0,Proxool,Bonecp主要的数据源,里面包含这些数据源的jar文件和依赖文件及配置文件。。 如Bonecp目前听说是最快的数据源,速度是传统的c3p0的25倍, bonecp.properties文件: ...

    陈开雄 Spring+3.x企业应用开发实战光盘源码.zip

     第4章:讲解如何在Spring配置文件中使用Spring 3.0的Schema格式配置Bean的内容,并对各个配置项的意义进行了深入的说明。  第5章:对Spring容器进行解构,从内部探究Spring容器的体系结构和运行流程。此外,我们...

    Spring.3.x企业应用开发实战(完整版).part2

    Spring3.0是Spring在积蓄了3年之久后,隆重推出的一个重大升级版本,进一步加强了Spring作为Java领域第一开源平台的翘楚地位。  Spring3.0引入了众多Java开发者翘首以盼的新功能和新特性,如OXM、校验及格式化框架...

    Spring3.x企业应用开发实战(完整版) part1

    Spring3.0是Spring在积蓄了3年之久后,隆重推出的一个重大升级版本,进一步加强了Spring作为Java领域第一开源平台的翘楚地位。  Spring3.0引入了众多Java开发者翘首以盼的新功能和新特性,如OXM、校验及格式化框架...

    springboot学习思维笔记.xmind

    注解配置 java配置 Spring概述 Spring的模块 核心容器CoreContainer Spring-Core Spring-Beans Spring-Context Spring-Context-Support Spring-Expression ...

    springjdbc

    -- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 --&gt; &lt;bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" /&gt; &lt;!-- apache.dbcp连接池的配置 --&gt; ...

    Spring攻略(第二版 中文高清版).part1

    1.2 配置Spring IoC容器中的Bean 4 1.2.1 问题 4 1.2.2 解决方案 4 1.2.3 工作原理 4 1.3 调用构造程序创建Bean 14 1.3.1 问题 14 1.3.2 解决方案 14 1.3.3 工作原理 14 1.4 解决构造程序歧义 17 ...

    Spring攻略(第二版 中文高清版).part2

    1.2 配置Spring IoC容器中的Bean 4 1.2.1 问题 4 1.2.2 解决方案 4 1.2.3 工作原理 4 1.3 调用构造程序创建Bean 14 1.3.1 问题 14 1.3.2 解决方案 14 1.3.3 工作原理 14 1.4 解决构造程序歧义 17 ...

    Spring Security-3.0.1中文官方文档(翻译版)

    这次发布的Spring Security-3.0.1 是一个bug fix 版,主要是对3.0 中存在的一些问题进 行修 正。文档中没有添加新功能的介绍,但是将之前拼写错误的一些类名进行了修正,建议开发 者以这一版本的文档为参考。 ...

    java8源码-spring-learning:spring学习

    这是第一个支持注解的版本。 Spring 3.0 发布于 2009 年。 它完全利用了 Java5 中的改进,并为 JEE6 提供了支持。 Spring 4.0 发布于 2013 年。 这是第一个完全支持 JAVA8 的版本。 功能 轻量级:Spring 在代码量和...

    Spring 3 Reference中文

    第2 章 Spring 3.0 的新特性和增强 21 2.1 Java 5.. 21 2.2 改进的文档. 21 2.3 新的文章和教程. 21 2.4 新的模块组织方式和构建系统.. 22 2.5 新特性概述. 22 2.5.1 为Java 5 更新...

    spring_MVC源码

    本文主要介绍使用注解方式配置的spring mvc,之前写的spring3.0 mvc和rest小例子没有介绍到数据层的内容,现在这一篇补上。下面开始贴代码。 文中用的框架版本:spring 3,hibernate 3,没有的,自己上网下。 先说...

    超详细的Spring框架讲解,就这一篇!足矣

    Spring框架概述1、什么是Spring2、Spring框架的优点3、Spring框架体系结构Spring框架——控制反转(IOC)1、IOC介绍2、基于配置的IOC2.1、导入jar包2.2、配置文件2.3、测试3、基于注解的IOC3.0、导包3.1、开启注解...

    mybatis完整的理论知识(.md版本)用Typora查看

    MyBatis 通过 xml 或注解两种方式将要执行的各种 sql 语句配置起来,并通过 java 对象和 sql 的 动态参数进行映射生成最终执行的 sql 语句, 最后由 mybatis 框架执行 sql 并将结 果映射为 java 对象并返回。 Spring...

    spring-annotion:Spring源码分析以及注解开发

    Spring注解驱动开发,包含一个refresh()方法的流程(在resources目录下) 模块介绍 ---&gt;... config AOP IOC已经一些bean的流程配置模块---&gt;启动也包含SpringMVC注解化开发和Servlet3.0注解开发

Global site tag (gtag.js) - Google Analytics