码迷,mamicode.com
首页 > 编程语言 > 详细

Spring Aop 实现拦截器功能之基础 - 001

时间:2015-08-25 17:10:52      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:

环绕通知用 @Around  注解来声明

 可以决定这个方法在什么时候执行,如何执行,甚至是否执行


通知的第一个参数必须是 ProceedingJoinPoint 类型


如下

@Pointcut("execution(* com.sxb.web.v2.wh.unittest2.aop.PersonServiceBean.save(..)) || execution(* com.sxb.web.v2.wh.unittest2.aop.PersonServiceBean.update(..))")  

    private void anyMethod(){}//定义一个切入点  


@Around("anyMethod() && args(name)")  

    public Object doAccessCheck(ProceedingJoinPoint pjp,String name) throws Throwable{  

   

   

        System.out.println("name2:"+name);

        System.out.println("环绕通知");

        

        //原实体类名(包括包名)  

        String className=pjp.getTarget().getClass().getName();  

        //原方法名  

        String methodName=pjp.getSignature().getName();  

        //原方法实参列表  

        Object[] arguments=pjp.getArgs();  

          

         

        return  null;//pjp.proceed();  

    }  


如上,当,返回值不为pjp.proceed()的时候,切入点的主体方法 将不会再执行;

            此时,当前通知返回的值将作为最后结果返回;


注意,对于 @Around中 定义的获取切入点方法的参数表达式 args(name),必须要和切入点的方法对应,在当前方法doAccessCheck中 也要完全对应,否则 通知失效

Spring Aop 实现拦截器功能之基础 - 001

标签:

原文地址:http://my.oschina.net/tinglanrmb32/blog/496889

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!