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

15. Spring源码篇之获取方法参数名

简介

通常在没有显示的指定beanName的时候,都是会根据要注入的类型以及方法名,属性名或者参数名来找Bean,方法名属性名还好说,但是参数名就有点难获取,jdk也并没有给我们提供获取的方法

在Spring中主要以两种方式来获取,一是反射,这种可能获取不到,二是本地变量表,通过asm的方式,这种肯定是可以获取到

spring提供的这两种方式我们平时也可以使用,spring中也会大量使用到

为了更容易后面看源码,本文西安介绍这两种方式

使用测试

public class ParameterNameDiscovererTest {
    public static void main(String[] args) throws NoSuchMethodException {
        // 反射方式
        StandardReflectionParameterNameDiscoverer nameDiscoverer = new StandardReflectionParameterNameDiscoverer();
        // 本地变量表
        LocalVariableTableParameterNameDiscoverer localVariableTableParameterNameDiscoverer = new LocalVariableTableParameterNameDiscoverer();
        Method method = ParameterNameDiscovererTest.class.getDeclaredMethod("Name", String.class);
        System.out.println(Arrays.toString(nameDiscoverer.getParameterNames(method)));
        System.out.println(Arrays.toString(localVariableTableParameterNameDiscoverer.getParameterNames(method)));
    }


    public void Name(String name) {

    }
}

执行输出
null
[name]

上面主要以一个例子来熟悉下spring获取方法参数名的方式,后面分析源码会更加容易看懂


欢迎关注,学习不迷路!


http://www.kler.cn/a/133944.html

相关文章:

  • flink sql + kafka + mysql 如何构建实时数仓
  • 1小时构建Vue3知识体系之vue的生命周期函数
  • gpu-V100显卡相关知识
  • 使用@react-three/fiber,@mkkellogg/gaussian-splats-3d加载.splat,.ply,.ksplat文件
  • ISAAC SIM踩坑记录--ubuntu 22.04操作系统安装
  • Coggle数据科学 | RAG编码模型对比:谁与OpenAI最为相似?
  • Qt按钮大全续集(QCommandLinkButton和QDialogButtonBox )
  • 【小黑送书—第六期】>>AI时代,程序员如何应对挑战——《AI时代系列书籍》
  • Ubuntu 20.04 LTS设置系统虚拟内存大小
  • 4 redis的HyperLogLog入门原理
  • Kubernetes(k8s)进阶
  • 大数据-之LibrA数据库系统告警处理(ALM-12055 证书文件即将过期)
  • 2023年第九届数维杯国际大学生数学建模挑战赛
  • 2023亚太地区数学建模竞赛A题B题C题思路+模型+代码
  • 【Go入门】 Go如何使得Web工作
  • CAPL实现CRC8的几种方式
  • 国产化项目改造:使用达梦数据库和东方通组件部署,前后端分离框架
  • C语言结构体
  • [webservice] springboot整合cxf
  • PMCW体制雷达系列文章(4) – PMCW雷达之抗干扰
  • FPGA设计时序约束八、others类约束之Set_Case_Analysis
  • 2-(脏读,不可重复读,幻读 ,mysql5.7以后默认隔离级别)、( 什么是qps,tps,并发量,pv,uv)、(什么是接口幂等性问题,如何解决?)
  • 记录一个困难
  • Nginx 核心配置文 nginx.conf介绍
  • 一文讲明 Spring 的使用 【全网超详细教程】
  • python-opencv 培训课程笔记(2)