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

SpringBoot之BeanDefinitionLoader类源码学习

该类的作用

Spring 框架中用于加载和解析 Bean 定义的工具类。它主要用于从不同的资源(如 XML 文件、注解、Java 配置类等)中读取 Bean 定义,并将这些定义注册到 Spring 的 BeanFactory 或 ApplicationContext 中

基本属性

//指定的资源private final Object[] sources;//用于将带有相关注解的类解析为beanprivate final AnnotatedBeanDefinitionReader annotatedReader;//用于将xml中类解析为beanprivate final XmlBeanDefinitionReader xmlReader;//用于将groovy中类解析为beanprivate BeanDefinitionReader groovyReader;//用于扫描包中符合指定条件的类private final ClassPathBeanDefinitionScanner scanner;// 资源加载器private ResourceLoader resourceLoader;

主要方法

/*** 加载给定源对象的数据* 该方法支持多种类型的源对象,包括Class、Resource、Package和CharSequence* 如果源对象的类型不受支持,则抛出IllegalArgumentException异常** @param source 数据源对象,可以是Class、Resource、Package或CharSequence类型* @return 加载的数据,具体类型取决于源对象的类型* @throws IllegalArgumentException 如果源对象的类型不受支持*/private int load(Object source) {// 确保源对象不为null,否则抛出IllegalArgumentException异常Assert.notNull(source, "Source must not be null");// 如果源对象是Class类型,调用相应的load方法if (source instanceof Class<?>) {return load((Class<?>) source);}// 如果源对象是Resource类型,调用相应的load方法if (source instanceof Resource) {return load((Resource) source);}// 如果源对象是Package类型,调用相应的load方法if (source instanceof Package) {return load((Package) source);}// 如果源对象是CharSequence类型,调用相应的load方法if (source instanceof CharSequence) {return load((CharSequence) source);}// 如果源对象的类型不受支持,抛出IllegalArgumentException异常throw new IllegalArgumentException("Invalid source type " + source.getClass());}
http://www.lryc.cn/news/520758.html

相关文章:

  • 【芯片封测学习专栏 -- 2D | 2.5D | 3D 封装的区别和联系】
  • 从硬件设备看Linux
  • open3d+opencv实现矩形框裁剪点云操作(C++)
  • git 本地操作
  • PL/SQL语言的文件操作
  • linux lsof 和 fuser命令介绍
  • [Python学习日记-76] 网络编程中的 socket 开发 —— 介绍、工作流程、socket 模块用法和函数介绍
  • vue(七) vue进阶
  • [Transformer] The Structure of GPT, Generative Pretrained Transformer
  • Django Admin 自定义操作封装
  • http和https有哪些不同
  • PL/SQL语言的数据库交互
  • 亿道三防丨三防笔记本是什么意思?和普通笔记本的优势在哪里?
  • 从项目代码看 React:State 和 Props 的区别及应用场景实例讲解
  • Vue 学习之旅:核心技术学习总结与实战案例分享(vue指令下+计算属性+侦听器)
  • freertos的基础(二)内存管理:堆和栈
  • vue \n 换行不不显示
  • GPT 系列论文精读:从 GPT-1 到 GPT-4
  • 在 Ubuntu 上安装和配置 Redis
  • Excel中双引号问题
  • 【机器学习】主动学习-增加标签的操作方法-流式选择性采样(Stream-based selective sampling)
  • elementUI项目中,只弹一个【token过期提示】信息框的处理
  • SpringBoot开发—— SpringBoot中如何实现 HTTP 请求的线程隔离
  • 【LLM】25.1.11 Arxiv LLM论文速递
  • 单片机实物成品-012 酒精监测
  • 使用葡萄城+vue实现Excel
  • 【Uniapp-Vue3】@import导入css样式及scss变量用法与static目录
  • 跟我学C++中级篇——字节序
  • Linux网络编程5——多路IO转接
  • Redis常见