spring注解方式AOP

引入相关依赖:

     <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>3.0.5.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aspects</artifactId>
            <version>3.0.5.RELEASE</version>
        </dependency>

       <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.7.2</version>
        </dependency>

spring文件配置:1、aop的xsd引入。2、<aop:aspectj-autoproxy/>标签:支持以注解方式实现切面

切面类编写:

就这么不知不觉完成了。。。下面来说说关键注解Pointcut 的用法。

Pointcut 的execution

      ps:Pointcut定义时,还可以使用&&、||、!,并且可以使用其他的切入点:

对所有标记了指定注解的类做切面的方法:    该类必须要给spring容器管理

 

其他注解:

 

  1. @Before("anyMethod() && args(name)")  
  2.     public void doAccessCheck(String name){  
  3.         System.out.println(name);  
  4.         System.out.println("前置通知");  
  5.     }  
  6.       
  7.     @AfterReturning("anyMethod()")  
  8.     public void doAfter(){  
  9.         System.out.println("后置通知");  
  10.     }  
  11.       
  12.     @After("anyMethod()")  
  13.     public void after(){  
  14.         System.out.println("最终通知");  
  15.     }  
  16.       
  17.     @AfterThrowing("anyMethod()")  
  18.     public void doAfterThrow(){  
  19.         System.out.println("例外通知");  
  20.     }  
  21.       
  22.     @Around("anyMethod()")  
  23.     public Object doBasicProfiling(ProceedingJoinPoint pjp) throws Throwable{  
  24.         System.out.println("进入环绕通知");  
  25.         Object object = pjp.proceed();//执行该方法  
  26.         System.out.println("退出方法");  
  27.         return object;  
  28.     } 

 

posted @ 2014-09-02 11:35  zenghong  阅读(384)  评论(0编辑  收藏  举报