AutoConfiguration加载元数据和自动配置组件
@EnableAutoConfiguration 加载元数据配置加载元数据配置主要是为后续操作提供数据支持 。
我们先来看加载相关源代码的具体实现 , 该功能的代码依旧日在 selectlmpots 方法内 。
@Overridepublic String[] selectImports (AnnotationMetadata annotationMetadata) {AutoConfigurat ionMetadata autoConf igurationMetadata = http://kandian.youth.cn/index/AutoConfigurationMetadataLoader. loadMetadata(this. beanClassLoader);}
加载元数据的配置用到了AutoConfigurationMetadataLoader类提供的loadMetaData方法 , 该方法会默认加载类路径下 META-INF/springautoconfigure-metadata.properties 内的配置 。
final class AutoConfigurationMetadataLoader {//默认加载元数据的路径protected static final String PATH = "META- INF/spring- autoconfigure - metadata.properties";//默认调用改方法 , 传入默认 PATHstatic AutoConfigurat ionMetadata loadMetadata(ClassLoader classLoader )return loadMetadata(classLoader, PATH);static AutoConfigurationMetadata loadMetadata(ClassLoader classLoader, Stringpath) {try//获取数据存储 FEnumeration 中Enumeration
在上面的代码中 AutoConfigurationMetadataLoader 调用 ladMetadaClassLoadar cassLoaden)方法 , 会获取默认变量 PATH 指定的文件 , 然后加载并存储于 Enumeration 数据结构中 。 随后从变量 PATH 指定的文件中获取其中配置的属性存诸 Poperties 内 , 最终调用在该类内部实现的 AutoConfigurationMetadata 的子类的构造方法 。
spring-autoconfigure-metadata.properties 文件内的配置格式如下 。
自动配置类的全限定名.注解名称=值
如果 spnaotningre-etadata properties 文件内有多个值 , 就用英文逗号分隔 , 例如:
org. springframework . boot . autoconfigure . data. jdbc . IdbcRepositoriesAutoConfiguration . ConditionalOnClass=org. springframework. data. jdbc . repos itory. config.JdbcConfigurat ion, org. springframework. jdbc . core . namedpar am .NamedParameterJdbcOperations 。。。
为什么要加载此元数据呢?加载元数据主要是为了后续过滤自动配置使用 。 Spring Boot 使用-Annlation 的处理器来收集自动加载的条件 , 这些条件可以在元数据文件中进行配置 。 SpingBoot 会将收集好的 C@Confguration 进行一 次过滤 , 进而剔除不满足条件的配置类 。
在官方文档中已经明确指出 , 使用这种配置方式可以有效缩短 SpringBoot 的启动时间 , 减少@oniguraio 类的数量 , 从而减少初始化 ean 的耗时 。 后续章节中我们会看到过滤自动配置的具体使用方法 。
推荐阅读
- 西部数据在CES 2021推出多款4TB容量的旗舰级SSD
- WhatsApp收集用户数据新政惹众怒,“删除WhatsApp”在土耳其上热搜
- 未来想进入AI领域,该学习Python还是Java大数据开发
- 黑客窃取250万个人数据 意大利运营商提醒用户尽快更换SIM卡
- 阳狮报告:4成受访者认为自己的数据比免费服务更有价值
- 中消协点名大数据网络杀熟 反对利用消费者个人数据画像
- 学习大数据是否需要学习JavaEE
- 意大利运营商Ho Mobile被曝数据泄露
- 微软官方数据恢复工具即将更新:更易于上手 优化恢复性能
- HDMI 2.1诞生三年:超高速数据线落地 8K电视圆满了