Spring LocalVariableTableParameterNameDiscoverer获取方法的参数名
Spring LocalVariableTableParameterNameDiscoverer获取方法的参数名
- 问题:Java.lang.reflect 包中提供了很多方法,获取所有的方法,获取所有的参数类型等,但是却没有一个方法能够帮助我们获取方法的参数名列表。
 - 解决办法:可以通过ASM提供的通过字节码获取方法的参数名称,spring给我们集成了这个东西,让我们使用起来非常的方便
 作用:这个东西有啥用,其实我们在Action层就会使用到,前端传递过来的参数是怎么反馈到具体的方法上的参数的值?这个需要理解,可以和最原始的Htttprequest.getParamer(“xxx”)这样的性质一样的吧。然后通过反射注入到具体的值中,但是怎么一一对应起来呢?这个就需要方法的参数名称啦,你懂了?通过名称看一下传递进来的参数是否含有具体的值,然后通过反射写入到具体的位置,这样我们在Action层的具体的方法中,可以获取到请求的值,而不用自己去手动的处理Httprequest.getParamer(“xxx”),这个也是框架给我们带来的便利性,离不开你…….
- 代码实践 
主要的方法: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获取方法的参数名的更多相关文章
- Spring AOP获取方法的参数名称和参数值
		
aop配置: <aop:aspectj-autoproxy expose-proxy="true" /> @Before(value = "execution ...
 - 通过反射获取方法的参数名称(JDK8以上支持)
		
方法的参数名,在很多时候我们是需要反射得到的.但是在java8之前,代码编译为class文件后,方法参数的类型是固定的,但参数名称却丢失了,这和动态语言严重依赖参数名称形成了鲜明对比.(java是静态 ...
 - Spring Boot获取前端页面参数的几种方式总结
		
Spring Boot的一个好处就是通过注解可以轻松获取前端页面的参数,之后可以将参数经过一系列处理传送到后台数据库. 获得的方式有很多种,这里稍微总结一下,大致分为以下几种: 1.指定前端url请求 ...
 - js获取url中参数名也参数值
		
要撮利用js获取url中参数名也参数值这个不多见了,但我今天需要这样操作,下面我来给大家介绍一下具体的实例方法. 在已知参数名的情况下,获取参数值,使用正则表达式能很容易做到. js的实现方法如下 ...
 - SpringMVC(八):使用Servlet原生API作为Spring MVC hanlder方法的参数
		
在SpringMVC开发中,是有场景需要在Handler方法中直接使用ServletAPI. 在Spring MVC Handler的方法中都支持哪些Servlet API作为参数呢? --Respo ...
 - java reflect反射获取方法变量参数
		
类的成员包含变量(Field),方法(Method),构造器(Constructor) 类定义 package Reflect; public class MyTest { public int a; ...
 - frida框架hook获取方法输出参数(常用于简单的so输出参数获取,快速开发)
		
一.模板 function douyinencode(data) { var result = {}; Java.perform(function () { try { var Test = Java ...
 - 将前端请求中的数据绑定到Spring MVC响应方法中参数的四种方法
		
一.映射URL绑定的占位符到方法参数 1.方法 使用@PathVariable注解 2.代码示例 a.接收请求方法 @RequestMapping(value = "/deleteInfo/ ...
 - Unity获取方法的参数和方法名称
		
public IMethodReturn Invoke(IMethodInvocation input, GetNextHandlerDelegate getNext) { Console.Write ...
 
随机推荐
- sql 重复数据查询
			
具体代码: ); ORDER BY tcount DESC;
 - android 休眠唤醒机制分析(一) — wake_lock【转】
			
Android的休眠唤醒主要基于wake_lock机制,只要系统中存在任一有效的wake_lock,系统就不能进入深度休眠,但可以进行设备的浅度休眠操作.wake_lock一般在关闭lcd.tp但系统 ...
 - ubuntu 安装FoxitReader福昕阅读器(转载)
			
虽然不怎么用Ubuntu来看文档,但是偶尔还是需要看一下的.而Ubuntu自带的打开PDF的软件真的看着很难受,装一个跨平台的福昕好了. 首先,下载.可以官网下载:福昕官网 不过晚上不知道网络抽风还是 ...
 - puppet使用 apache passsenger 作为前端 (centos)
			
目录 1. 概要 2. nginx + passenger 配置 2.1. package 安装 2.2. 配置文件设置 2.3. rack 目录生成 概要 使用 nginx + passenger ...
 - CSS鼠标悬浮DIV后显示DIV外的按钮
			
昨天写样式遇到个问题,如何让鼠标悬浮DIV后,显示DIV外的按钮,可以点击到按钮. 效果如下: 问题: 在DIV hover时候将按钮设为display: block,这是很直接的想法,但是这有个问题 ...
 - 《生命》第四集:Fish (鱼类)
			
旗鱼,是游动最快的鱼,他们不仅速度快,背上的鱼鳍还能吓唬成群的沙丁鱼,他们依靠速度与技巧结队捕食. 飞鱼,继续讲述了一下,飞鱼可以飞起来,把捕食者远远甩掉:飞鱼保护后代的方式是把卵产在水中的树叶上,很 ...
 - Hibernate知识点总结(一)
			
前言:学习的过程在于不断的总结与思考,这里记下笔者在学习过程中,所遇到的知识点,增加对框架掌握的熟悉程度. 1.环境的搭建 通过maven可以轻松搭建hibernate的环境. <propert ...
 - Pandas  拼接操作  数据处理
			
数据分析 生成器 迭代器 装饰器 (两层传参) 单例模式() ios七层 io多路 数据分析:是把隐藏在一些看似杂乱无章的数据背后的信息提炼出来,总结出所研究对象的内在规律 pandas的拼接操作 p ...
 - Python:Day26  socket
			
SOCKET通信流程 服务器创建套接字链接: 1.创建SOCKET,socket.socket(family=AF_INET, type=SOCK_STREAM, proto=0, fileno=No ...
 - 10 python 初学(Python 的编码解码)
			
Python 2 : ASCII Python 3 :Unicode