首页 > 其他分享 >spring-LocalVariableTableParameterNameDiscoverer

spring-LocalVariableTableParameterNameDiscoverer

时间:2024-04-09 15:47:52浏览次数:20  
标签:spring ctx class invocation names LocalVariableTableParameterNameDiscoverer meth

记录一下后期整理

注:此工具类是解析class文件从class文件获取,而不是通过元空间的class对象的method获取

 

/**
         * 在 jdk 8 以前java源码编译后通过反射是无法获得形参名的,在Java 8及之后,编译的时候可以通过-parameters 为反射生成元信息,可以获取到方法的参数名,但这个行为默认是关闭的,
         * 我们平常用Spring的时候也没有开启, 那在没有开启和jdk 8 以前那在Springmvc项目中是如何获得方法的形参的呢,这个形参可关系到根据参数名称依赖注入和Controller中参数绑定。
         * 答案是 通过字节码技术,将该类的class文件读进来,通过class的存储信息来得到的 ,就是LocalVariableTableParameterNameDiscoverer的inspectClass方法得到形参名
         */
        private LocalVariableTableParameterNameDiscoverer localVariableTableParameterNameDiscoverer = new LocalVariableTableParameterNameDiscoverer();

        /**
         * 预置方法参数为el 内置变量
         *
         * @param invocation
         * @param ctx
         */
        private void setCtxVariableByMethodParameter(MethodInvocation invocation, EvaluationContext ctx) {
            Method method = invocation.getMethod();
            Parameter[] parameters = method.getParameters();
            if (ArrayUtil.isEmpty(parameters)) {
                return;
            }
            // 内部有缓存
            String[] names = localVariableTableParameterNameDiscoverer.getParameterNames(method);
            Object[] arguments = invocation.getArguments();
            for (int i = 0; i < names.length; i++) {
                if (log.isDebugEnabled()) {
                    log.debug("#111  ctx.setVariable name={},value={}", names[i], arguments[i]);
                }
                ctx.setVariable(names[i], arguments[i]);
            }
        }

 

标签:spring,ctx,class,invocation,names,LocalVariableTableParameterNameDiscoverer,meth
From: https://www.cnblogs.com/LQBlog/p/18124108

相关文章

  • idea配置springmvc项目
    传统的web项目(含有webroot文件夹)导入IDEA需要做的一系列配置_ideawebroot-CSDN博客IDEA部署以往的springmvc项目,用外部Tomcat部署---精简版,几步操作完成_springmvc用外置的tomcat-CSDN博客参考这位博主的内容成功配置需要修改的是默认启动文件出现新的问题,js和css文件不好使,......
  • Vue2 + Spring Boot的题库管理和在线考试系统
    一个demo从0到1的搭建~使用mybatisplus快速开发springboot项目(一)--初始化-CSDN博客使用mybatisplus快速开发springboot项目(二)--业务实现_如何用mybatis-plus写业务-CSDN博客使用mybatisplus快速开发springboot项目(三)--JWT拦截器-CSDN博客使用mybatisplus快速开发springboot......
  • Springboot 添加License 以及生成证书和证书验证
    1.先准备生成cer证书及私钥,公钥##(1).生成私匙库#validity:私钥的有效期多少天 365 #alias:私钥别称 privateKey#keystore:指定私钥库文件的名称(生成在当前目录) privateKeys.keystore#storepass:指定私钥库的密码(获取keystore信息所需的密码) public_password#key......
  • Springboot计算机毕业设计海滨学院校园墙小程序【附源码】开题+论文+mysql+程序+部署
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容计算机毕业设计海滨学院校园墙小程序研究背景、意义、目的研究背景随着移动互联网技术的快速发展,微信小程序以其便捷性、即用即走的特点,迅速渗透到人们的日......
  • Springboot计算机毕业设计购物商城微信小程序【附源码】开题+论文+mysql+程序+部署
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容计算机毕业设计购物商城微信小程序的研究背景、意义、目的研究背景随着互联网技术的迅猛发展,移动智能终端的普及率不断攀升,微信小程序以其便捷性、轻量级的......
  • 基于SpringBoot+Vue大学生租房平台的设计与实现
    基于SpringBoot+Vue大学生租房平台的设计与实现系统介绍基于SpringBoot+Vue大学生租房平台使用Java语言进行编码,使用Mysql创建数据表保存本系统产生的数据。系统可以提供信息显示和相应服务,其管理员管理房东和用户,对房东提交的信息审批信息进行审核,审核房东发布的房源信......
  • SpringBoot中pom.xml配置详解 第一章
    pom.xml是Maven项目的核心配置文件,负责管理项目的依赖、插件、构建配置等。对于SpringBoot项目而言,pom.xml文件显得尤为重要。其中,你可以配置项目的资源文件以及其他相关内容。在SpringBoot的pom.xml文件中,通常会包含一个<resources>标签,该标签用于指定资源文件的路径和......
  • 【SpringBoot整合系列】SpringBoot 实现大文件分片上传、断点续传及秒传
    目录功能介绍文件上传分片上传秒传断点续传相关概念相关方法大文件上传流程前端切片处理逻辑后端处理切片的逻辑流程解析后端代码实现功能目标1.建表SQL2.引入依赖3.实体类4.响应模板5.枚举类6.自定义异常7.工具类8.Controller层9.FileService10.LocalStorageService11......
  • Springboot计算机毕业设计高校课堂管理小程序【附源码】开题+论文+mysql+程序+部署
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着信息技术的迅猛发展,高校课堂管理逐渐从传统的人工管理模式向数字化、智能化转变。当前,高校课堂管理面临着诸多挑战,如学生信息管理繁琐、选课排课......
  • Springboot计算机毕业设计高校兼职小程序【附源码】开题+论文+mysql+程序+部署
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着高校教育的普及和就业市场的日益竞争,越来越多的大学生开始寻求在校期间的兼职机会,以丰富自身经验、锻炼实践能力,并获取一定的经济回报。然而,传统......