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

SpringBoot 配置类解析

全局流程解析

配置类解析入口

postProcessBeanDefinitionRegistry逻辑

processConfigBeanDefinitions逻辑

执行逻辑解析

执行入口

ConfigurationClassPostProcessor.processConfigBeanDefinitions()方法中的do while循环体中

循环体逻辑

parse方法调用链

doProcessConfigurationClass

  • 处理内部类
  • 处理PropertySource注解
  • ComponentScan指定的路径进行扫描
  • 处理Import注解
  • 处理ImportResource
  • 转换bean的方法BeanMethod
  • 处理接口的默认方法
  • 处理父类

核心方法解析

内部类处理

org.springframework.context.annotation.ConfigurationClassParser#processMemberClasses

PropertySource处理

org.springframework.context.annotation.ConfigurationClassParser#processPropertySource

  • 用法:@PropertySource({"demo.properties"})
  • 遍历指定路径,替换占位符,加载资源
  • 将资源添加到environment

ComponentScan处理

  • @ComponentScan(basePackages = ({"pkgA","pkgB"}), basePackageClasses = ({A.class, B.class})
  • 没设置扫描路径的话使用配置类所在路径
  • 过滤顺序: excludeFilters -> includeFilters -> false

Import处理

  • ImportSelector.class & DeferredImportSelector.class
  • 处理以上两个接口实现selectImports返回的类名数组
  • DeferredImportSelector接口调用优先级低于其他接口
  • 处理ImportBeanDefinitionRegistrar实现中注册的bean
  • 处理@Import(A.class)

ImportResource处理

  • @ImportResource("xyz.xml")
  • 将注解属性值放入importedResources
  • 后续loadBeanDefinitionsForConfigurationClass中加载定义的bean

BeanMethod处理

  • 构造BeanMethod对象放入配置类属性中后续处理

接口默认方法处理

父类处理

  • 一: 不为null
  • 二: 全路径名不以java开头
  • 三: 尚末处理过

面试题

  • 配置类是什么?起到什么作用?
  • 请举例一些常用的配置注解?
  • 介绍下SpringBoot框架对配置类的一个处理流程?
  • 你能说出其中它其中的一些关键类和方法么?
  • 配置类的处理一般包括哪些内容?
  • 详细的一些注解处理过程?如Import注解?
http://www.lryc.cn/news/290962.html

相关文章:

  • 全套军事和民用监听系统
  • MicroPython核心:编译器
  • R语言【taxlist】——tax2traits():将分类信息设置为分类单元特征
  • CTF-WEB的知识体系
  • 【Spring框架】@Cacheable注解:缓存最佳实践
  • iZotope RX 10.4.2 mac激活版 音频修复和增强工具
  • vue核心知识点
  • 【乳腺肿瘤诊断分类及预测】基于Elman神经网络
  • 【kubernets】由Evicted状态的Pod探讨k8s中pod的驱逐策略
  • vxe-table3.0的表格树如何做深层查找,返回搜索关键字的树形结构
  • 幻兽帕鲁越玩越卡,内存溢出问题如何解决?
  • C++_list
  • 使用docker部署mongodb
  • C#,打印漂亮的贝尔三角形(Bell Triangle)的源程序
  • 开源电商系统
  • 责任链模式在java中的实现
  • 粤嵌Gec6818---小项目功能实现简单步骤(RFID+图片显示+音乐+视频)
  • opencv学习 特征提取
  • 关于maven项目构建的解释
  • IMU/捷联惯导常见的术语,以及性能评价标准(附Python解析代码)
  • Debezium发布历史98
  • APUE学习之进程间通信(IPC)(下篇)
  • 【Java 设计模式】行为型之中介者模式
  • MySql 慢SQL配置,查询,处理
  • 算法:分界线
  • STM32单片机基本原理与应用(四)
  • elk之安装和简单配置
  • springboot(ssm环保网站 绿色环保宣传系统Java系统
  • 【MBtiles数据索引和服务发布】GeoServer改造Springboot番外系列二
  • Redis抓取数据到Logstash再推到Elasticsearch集群