springCloud改变bootstrap.yml本地文件配置

  1. 获取StandardEnvironment并调用getPropertySources()方法(此处因为要在nacosConfigService读取environment获取鉴权账密之前修改,所以在BeanFactoryPostProcessor的实现类中获取),可通过@Autowire注入,或applicationContext获取
StandardEnvironment e = beanFactory.getSingleton("environment");
  1. 遍历取得的MutbalePropertySources并用instanceof及propertySource.getName()筛选想要修改的PropertySource
  2. bootstrap.yml/properties文件class固定为OriginTrackedMapPropertySource,并且无法修改。使用OriginTrackedMapPropertySource.getSource()后取得sourceMap(getSource()获取的map同样是unmodifiyMap)。
  3. 获取sourceMap.keySet()并遍历sourceMap。
  4. 通过
    environment.getProperty(key) 或 ((OriginTrackedValue)sourceMap.get(key)).getValue()
    获取参数原本的值,instanceof判断后进行需要的数据处理(防止boolean被错误转换为string报错)。
  5. StringValue处理完毕后使用OriginTrackedValue.of(StringValue, oldOriginTrackedValue.getOrigin())方法生成新的OriginTrackedValue。在本次遍历中将所有需要的属性放入newSourceMap中。
  6. 遍历完毕后 new OriginTrackedMapPropertySource(propertySource.getName(), newSourceMap),并使用MutbalePropertySources.replace()指名替换原有propertySource。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值