首页 > 编程语言 > 详细

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

时间:2015-08-25 17:10:41      阅读:298      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!