spring 配置模型

发布时间:2023年12月18日

一、引言

? ? ? ? 本文将会介绍spring的配置模型、配置初始化和动态刷新。

二、技术细节

1、配置模型

Environment ->
    Profile -> active / default
    MutablePropertySources -> PropertySourcer -> servlet,system,spring
    PropertyResolver -> PropertyConvension
                   

MutablePropertySourcer->? ?多源、List<PropertySource<?>> propertySourceList;
? ? ? ? PropertySourcer -> 配置源
? ? ? ? ConversionService -> 配置转换器
 

2、初始化配置优先级

1.命令行参数

    java -jar xxx.jar -Da=b

2.Java系统属性

3.操作系统环境变量


tips: 如果使用远程的配置中心,可以在 spring boot  PropertySourcer前加入自己的Sourcer
4.spring boot 配置文件

    application.yml / application.properties

3、spring 配置动态刷新

? ? ? ? Environment中的PropertySourcer是无法更改的,

? ? ? ? 要实现动态更新目前有2种方式
? ? ? ? ? ? ? ? ? ?

 一. 绕过environment,environment只在配置初始化做全量。
    a.收集@Value对应的字段,维护key与字段(Field,target)关系,
      可以通过BeanPostProcessor实现
    b.捕捉配置变更,发送spring event,listener通过反射修改对应的字段 
?   c.提供一个工具类,直接获取配置,如ApolloConfigUtil

 二、修改并替换掉PropertySourcer对象
    a.通过Environment 获取对应的PropertySourcer对象,并更新对应的字段值。

文章来源:https://blog.csdn.net/qq_37011724/article/details/135069020
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。