当前位置: 首页 > news >正文

当接口被调用时使用Spring拦截器注入运行时数据

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

开发背景

使用CXF暴露与调用接口,为了方便追踪错误,所以想要在接口被调用时将一些运行时数据记录起来,所以就想到了拦截器。

CXF自带拦截器,但是据我初步了解,自带的拦截器都是经过封装,用来打印日志什么的,好像没有提供给开发者定制功能的方式(没有深入了解,如果有说错请方便斧正)

流程

其实Spring的拦截器使用挺方便的,实现org.aopalliance.intercept.MethodInterceptor接口中的invoke方法,在方法中实现想要的逻辑。然后在Spring配置文件中注入它就了事。

代码

拦截器实现方法

    @Override
    public Object invoke(MethodInvocation invocation) throws Throwable {
        //获取当前被调用的方法
        Method method = invocation.getMethod();
        String methodName = method.getDeclaringClass().getSimpleName() + "." + method.getName();
        //执行被拦截器拦截下来的方法,获得其返回值
        Object object = invocation.proceed();
        //做自己的逻辑,我这里将被调用的方法信息放入返回值中。
        if (object instanceof SimpleResult) {
            SimpleResult result = (SimpleResult) object;
            result.createMsg(methodName);
        }
        return object;
    }

将拦截器注入IOC容器中

<bean id="resultLogInterceptor" class="com.elin4it.demo.interceptor.ResultLogInterceptor"/>

配置拦截器

<bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
    <!--配置拦截器名-->
    <property name="interceptorNames">
        <list>
            <value>resultLogInterceptor</value>
        </list>
    </property>
    <!--要拦截的接口,可以使用通配符-->
    <property name="beanNames">
        <list>
            <value>*Facade</value>
        </list>

    </property>
</bean>

转载于:https://my.oschina.net/u/3099393/blog/798372

相关文章:

  • validatebox实现多重规则验证
  • Spring MVC的RequestContextHolder使用误区
  • 面对问题时尽量避免的两种思维
  • jQuery API 中文文档
  • 在iptables防火墙下开启vsftpd的端口
  • 包装类型的存在便于了集合类添加原生数据
  • linux mysql 相关操作命令
  • SSH 原理和公匙私匙
  • Programming C#.Classes and Objects.只读字段
  • 设计模式 博客
  • CentOS安装Docker报错文件冲突的解决方法
  • 20141111
  • vue2.0一起在懵逼的海洋里越陷越深(四)
  • Python用format格式化字符串
  • 【转】NSString属性什么时候用copy,什么时候用strong?
  • CentOS7简单部署NFS
  • E-HPC支持多队列管理和自动伸缩
  • JavaScript的使用你知道几种?(上)
  • Java到底能干嘛?
  • js继承的实现方法
  • learning koa2.x
  • LeetCode18.四数之和 JavaScript
  • PHP的类修饰符与访问修饰符
  • python学习笔记-类对象的信息
  • windows下如何用phpstorm同步测试服务器
  • 程序员最讨厌的9句话,你可有补充?
  • 关于extract.autodesk.io的一些说明
  • 汉诺塔算法
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 前端攻城师
  • 思维导图—你不知道的JavaScript中卷
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • 容器镜像
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • ​Spring Boot 分片上传文件
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • (4)logging(日志模块)
  • (42)STM32——LCD显示屏实验笔记
  • (MonoGame从入门到放弃-1) MonoGame环境搭建
  • (Python第六天)文件处理
  • (附源码)计算机毕业设计SSM疫情社区管理系统
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
  • .net core 3.0 linux,.NET Core 3.0 的新增功能
  • .net core 连接数据库,通过数据库生成Modell
  • .net Stream篇(六)
  • .net 受管制代码
  • .netcore 6.0/7.0项目迁移至.netcore 8.0 注意事项
  • .net反混淆脱壳工具de4dot的使用
  • .Net接口调试与案例
  • .NET开发者必备的11款免费工具
  • @JsonSerialize注解的使用
  • @value 静态变量_Python彻底搞懂:变量、对象、赋值、引用、拷贝
  • [ Linux 长征路第五篇 ] make/Makefile Linux项目自动化创建工具
  • [ 攻防演练演示篇 ] 利用通达OA 文件上传漏洞上传webshell获取主机权限