文档章节

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

岸芷汀兰
 岸芷汀兰
发布于 2015/08/25 14:44
字数 253
阅读 300
收藏 3

环绕通知用 @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中 也要完全对应,否则 通知失效

© 著作权归作者所有

共有 人打赏支持
岸芷汀兰
粉丝 28
博文 277
码字总数 90342
作品 0
南岸
高级程序员
深入解析Spring架构与设计原理-AOP

关于AOP的个人理解 AOP联盟定义的AOP体系结构把与AOP相关的概念大致分为了由高到低、从使用到实现的三个层次。关于这个体系结构,个人的理解是这样的,从上往下,最高层是语言和开发环境,在...

Java小铺
08/27
0
0
Spring AOP 日志拦截器的事务管理

如果要在方法执行前或后或抛出异常后加上一个自己的拦截器,或者一个环绕拦截器,在拦截器中执行一些操作,比如执行一些数据库操作,记录一些信 息,这些操作通过调用一个服务类的方法来执行...

哲别0
05/18
0
0
在Spring-Boot中实现通用Auth认证的几种方式

前言 最近一直被无尽的业务需求淹没,没时间喘息,终于接到一个能让我突破代码舒适区的活儿,解决它的过程非常曲折,一度让我怀疑人生,不过收获也很大,代码方面不明显,但感觉自己抹掉了 ...

枕边书
07/17
0
0
3.5 ProxyFactoryBean实现AOP的过程总结

回顾下通过ProxyFactoryBean实现AOP的整个过程: 首先需要对目标对象以及拦截器进行正确配置,以便AopProxy代理对象顺利产生;这些配置可以通过配置ProxyFactoryBean的属性来完成,或者通过编...

edwardGe
06/04
0
0
Spring3.2 AOP 分析

Spring3.2 AOP个人分析: AOP, 即Aspect-Oriented-Programming, 面向切面编程, 又一Spring的核心,被广泛应用,如在Spring-tx中都有用到,其好处是实现松耦合的外围处理程序,先说些理论吧。...

ihaolin
2014/01/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

mixin混入

①新建mixin.js文件 const mixin = { methods: { /** * 分页公共方法 */ handleSizeChange(val) { this.pageData.size = val; this.query(); }, hand......

不负好时光
昨天
0
0
ERC1155实践|区块链游戏的平行宇宙和为此而生的Enjin钱包

1 摘要 恩金(Enjin)花了大半年的时间一直在完善ERC-1155这个通证协议,毫不夸张地说,该标准是现有以太坊上最适用于游戏资产的通证标准,将主流游戏中道具涉及到的一切操作经过高度抽象之后...

HiBlock
昨天
1
0
Oracle发布开源的轻量级 Java 微服务框架 Helidon

近日,Oracle推出了一个新的开源框架Helidon,该项目是一个用于创建基于微服务的应用程序的Java库集合。和Payara Micro、Thorntail(之前的WildFly Swarm)、OpenLiberty、TomEE等项目一样,...

关注公众号_搜云库_每天更新
昨天
1
0
启动线程以及安全终止线程

启动 使用start()方法可以启动线程。 start()方法的含义是告知线程规划器线程已初始化完毕,可以分给这个线程时间片了(执行run()方法)。 安全终止线程 示例代码 import java.util.concurr...

karma123
昨天
1
0
Python+OpenCV 图像风格迁移(模仿名画)

现在很多人都喜欢拍照(自拍)。有限的滤镜和装饰玩多了也会腻,所以就有 APP 提供了模仿名画风格的功能,比如 prisma、versa 等,可以把你的照片变成 梵高、毕加索、蒙克 等大师的风格。 这...

crossin
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部