AutoConfiguration加载元数据和自动配置组件( 三 )
简单描述以上加载的过程就是: SpringFactoriesLoader 加载 器加载指定 ClassL oader 下面的所有 META-INF/spring.factories 文件 , 并将文件解析内容存于 Map>内 。 然后 , 通过 loadFactoryNames 传递过来的 class 的名称从 Map 中获得该类的配置列表 。
结 合 下 面 spring.factories 文 件 的 内 容 格 式,我 们 可 以 更 加 清 晰 地 了 解Map>中都存储了什么 。
# Auto Configureorg. springframework . boot . autoconfigure . EnableAutoConf iguration=\org. springframework . boot . autoconfigure . admin. Spr ingApplicat ionAdminJmxAutoConfig :uration, \org. springframework . boot . autoconfigure . aop . AopAutoConfiguration, \org . springframework . boot . autoconfigure . amqp . RabbitAutoConfiguration, \org. springframework . boot. autoconfigure . batch . BatchAutoConfiguration,\org. springfr amework . boot . autoconfigure . cache . CacheAutoConfiguration, \org. springframework . boot . autoconfigure . cassandra . CassandraAutoConfiguration,\ 。。。
以上代码仅以 EnableAutoConfiguration 配置的部分内容为例 , spring.factories 文件的基本格式为自动配置类的全限定名=值 , 与 2.3.5 节中介绍的元数据的格式很相似 , 只不过缺少了“ , 注解名称”部分 , 如果包含多个值 , 用英文逗号分隔 。
【AutoConfiguration加载元数据和自动配置组件】我们继续以 EnableAutoConfiguration 的配置为例 Map>内存储的对应数据就是key值为\/nliin/古org.springframework.boot.autoconfigure .EnableAutoConfiguration , Value 值为其等号后面以分号分割的各种 AutoConfiguration 类 。
当然 , spring.factories 文件内还有其他的配置 , 比如用于监听的 Listeners 和用于过滤的Filters 等 。 很显然 , 在加载自动配置组件时 , 此方法只用到了 EnableAutoConfiguration 对应的配置 。
因为程序默认加载的是 ClassLoader 下面的所有 META-INF/spring.factories文件中的配置 , 所以难免在不同的 jar 包中出现重复的配置 。 我们可以在源代码中使用 Set 集合数据不可重复的特性进行去重操作 。
protected finalList removeDuplicates(List list) {return new ArrayList<>(new LinkedHashSet<>(list));}
本文给大家讲解的内容是AutoConfiguration加载元数据配置和加载自动配置组件
- 下篇文章给大家讲解的是AutoConfiguration 排除指定组件和过滤自动配置组件;
- 觉得文章不错的朋友可以转发此文关注小编;
- 感谢大家的支持!
推荐阅读
- 西部数据在CES 2021推出多款4TB容量的旗舰级SSD
- WhatsApp收集用户数据新政惹众怒,“删除WhatsApp”在土耳其上热搜
- 未来想进入AI领域,该学习Python还是Java大数据开发
- 黑客窃取250万个人数据 意大利运营商提醒用户尽快更换SIM卡
- 阳狮报告:4成受访者认为自己的数据比免费服务更有价值
- 中消协点名大数据网络杀熟 反对利用消费者个人数据画像
- 学习大数据是否需要学习JavaEE
- 意大利运营商Ho Mobile被曝数据泄露
- 微软官方数据恢复工具即将更新:更易于上手 优化恢复性能
- HDMI 2.1诞生三年:超高速数据线落地 8K电视圆满了