spring 配置模型

一、引言

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

二、技术细节

1、配置模型

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

MutablePropertySourcer->   多源、List> 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对象,并更新对应的字段值。

你可能感兴趣的:(基础服务,spring)