Spring LocalVariableTableParameterNameDiscoverer获取方法的参数名

  • 问题:Java.lang.reflect 包中提供了很多方法,获取所有的方法,获取所有的参数类型等,但是却没有一个方法能够帮助我们获取方法的参数名列表。
  • 解决办法:可以通过ASM提供的通过字节码获取方法的参数名称,spring给我们集成了这个东西,让我们使用起来非常的方便
  • 作用:这个东西有啥用,其实我们在Action层就会使用到,前端传递过来的参数是怎么反馈到具体的方法上的参数的值?这个需要理解,可以和最原始的Htttprequest.getParamer(“xxx”)这样的性质一样的吧。然后通过反射注入到具体的值中,但是怎么一一对应起来呢?这个就需要方法的参数名称啦,你懂了?通过名称看一下传递进来的参数是否含有具体的值,然后通过反射写入到具体的位置,这样我们在Action层的具体的方法中,可以获取到请求的值,而不用自己去手动的处理Httprequest.getParamer(“xxx”),这个也是框架给我们带来的便利性,离不开你…….

    1. 代码实践 
      主要的方法:LocalVariableTableParameterNameDiscoverer.getParameterNames(Method method);然后返回参数的Stirng数组,没有返回NULL
package com.common.utils.Hibernatevalidatedemo.ValidateParameter;

import lombok.extern.slf4j.Slf4j;
import org.springframework.core.LocalVariableTableParameterNameDiscoverer; import java.lang.reflect.Method; /**
* descrption: 通过spring的LocalVariableTableParameterNameDiscoverer 获取方法的参数,spring也是通过使用ASM通过字节码获取方法中参数的具体的名称
* authohr: wangji
* date: 2017-08-15 10:20
*/
@Slf4j
public class GetMethArguments { private static final LocalVariableTableParameterNameDiscoverer parameterNameDiscoverer = new LocalVariableTableParameterNameDiscoverer();
public void testArguments(String test,Integer myInteger,boolean booleanTest){
}
public void test(){ }
public static void main(String[] args) {
Method[] methods = GetMethArguments.class.getMethods();
for(Method method:methods){
String[] paraNames = parameterNameDiscoverer.getParameterNames(method); log.info("methodName:"+method.getName());
if(paraNames !=null){
StringBuffer buffer = new StringBuffer();
for(String string:paraNames){
buffer.append(string).append("\t");
}
log.info("parameArguments:"+buffer.toString());
}else{
log.info("无参数");
}
}
}

Spring LocalVariableTableParameterNameDiscoverer获取方法的参数名的更多相关文章

  1. Spring AOP获取方法的参数名称和参数值

    aop配置: <aop:aspectj-autoproxy expose-proxy="true" /> @Before(value = "execution ...

  2. 通过反射获取方法的参数名称(JDK8以上支持)

    方法的参数名,在很多时候我们是需要反射得到的.但是在java8之前,代码编译为class文件后,方法参数的类型是固定的,但参数名称却丢失了,这和动态语言严重依赖参数名称形成了鲜明对比.(java是静态 ...

  3. Spring Boot获取前端页面参数的几种方式总结

    Spring Boot的一个好处就是通过注解可以轻松获取前端页面的参数,之后可以将参数经过一系列处理传送到后台数据库. 获得的方式有很多种,这里稍微总结一下,大致分为以下几种: 1.指定前端url请求 ...

  4. js获取url中参数名也参数值

    要撮利用js获取url中参数名也参数值这个不多见了,但我今天需要这样操作,下面我来给大家介绍一下具体的实例方法.   在已知参数名的情况下,获取参数值,使用正则表达式能很容易做到. js的实现方法如下 ...

  5. SpringMVC(八):使用Servlet原生API作为Spring MVC hanlder方法的参数

    在SpringMVC开发中,是有场景需要在Handler方法中直接使用ServletAPI. 在Spring MVC Handler的方法中都支持哪些Servlet API作为参数呢? --Respo ...

  6. java reflect反射获取方法变量参数

    类的成员包含变量(Field),方法(Method),构造器(Constructor) 类定义 package Reflect; public class MyTest { public int a; ...

  7. frida框架hook获取方法输出参数(常用于简单的so输出参数获取,快速开发)

    一.模板 function douyinencode(data) { var result = {}; Java.perform(function () { try { var Test = Java ...

  8. 将前端请求中的数据绑定到Spring MVC响应方法中参数的四种方法

    一.映射URL绑定的占位符到方法参数 1.方法 使用@PathVariable注解 2.代码示例 a.接收请求方法 @RequestMapping(value = "/deleteInfo/ ...

  9. Unity获取方法的参数和方法名称

    public IMethodReturn Invoke(IMethodInvocation input, GetNextHandlerDelegate getNext) { Console.Write ...

随机推荐

  1. 关于phpstorm ftp目录乱码

    关于IIS FTP服务器汉字文件目录乱码问题:一般来说,IIS 服务器编码默认为GBK,而你的目录可能是UTF-8,将phpstorm的远程连接设置为GBK就OK了.记住服务器的编码,文件的编码要统一

  2. February 19th, 2018 Week 8th Monday

    Love is blind, hard to find, difficult to get, and impossible to forget. 爱,很盲目,很难找,很难得,很难忘. It is al ...

  3. 第一次使用Open Live Writer维护BlogJava

    换了电脑,又重装了一堆东西,现在才把Open Live Writer整好.顺便记下几个心得: Open Live Writer已经没办法从网站上下载了,介绍个方法,可以把地址直接拷贝到迅雷里面,然后请 ...

  4. 【C编程基础】make命令和makefile文件

    1.关于程序的编译和链接 一般来说,无论是C.C++首先要把源文件编译成中间目标文件即 Object File(windows为.obj文件,unix为.o文件),这个动作叫做编译(compile). ...

  5. MySQL高级知识(三)——索引

    前言:索引在sql调优部分占据着重要的位置,了解并深入索引对我们来说也是非常重要的.本篇主要介绍MySQL中索引的相关知识点. 1.索引是什么 MySQL官方对索引的定义:索引(Index)是帮助My ...

  6. springboot--bean交给容器

    1.把bean交给springboot管理 springboot也是一个spring容器.把一个bean交给springboot的容器有三种方法,前两种是先把bean交给spring容器再把sprin ...

  7. 第2章 认识JAVA虚拟机的基本结构

    2.1 虚拟机的内存划分 垃圾回收系统既回收堆,也回收方法区和直接内存 直接内存其实是一块不受JVM管理的内存,但是收到计算机内存的限制 2.2 虚拟机参数 -Xmx:虚拟机最大可用内存 2.3 堆 ...

  8. Linux:Day8(上) 文件系统挂载和管理工具

    文件系统管理: 将额外文件系统与根文件系统某现存的目录建立起关联关系,进而使得此目录做为其它文件访问入口的行为称之为挂载: 解除此关联关系的过程称之为卸载: 把设备关联挂载点:Mount Point ...

  9. 联想Y700安装显卡驱动和CUDA8.0

    一显卡驱动安装 1 安装驱动安装软件 2 自动检测下载对应版本驱动 3下载完成后,点击开始,解压出来临时安装文件 由于是临时安装文件,退出就会关闭 4所以在没有关闭情况下,打开重新打开一次setup, ...

  10. 转载 mvc:message-converters简单介绍 https://www.cnblogs.com/liaojie970/p/7736098.html

    mvc:message-converters简单介绍 说说@ResponseBody注解,很明显这个注解就是将方法的返回值作为reponse的body部分.我们进一步分析下这个过程涉及到的内容,首先就 ...