博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Springboot 实现启动后动态修改配置
阅读量:2048 次
发布时间:2019-04-28

本文共 1764 字,大约阅读时间需要 5 分钟。

以SpringCloud 为例,希望服务在启动后根据某些信息生成一个动态的 实例ID

也就是application.yaml中配置的如Eureka的配置

eureka:  instance:    instance-id: ID

我们如果希望在服务启动时候随机生成一个instance-id,首先找到

可以使用BeanPostProcessor在Bean实例化之后对他进行修改eureka.instance这个属性绑定到的Bean,通过在application.yaml 按住Ctril + 左键点击可以找到org.springframework.cloud.netflix.eureka.EurekaInstanceConfigBean

在这里插入图片描述

接下在使用后处理器在实例化之后对属性进行调整即可

@Componentpublic class EurekaConfigBeanPostProcessor implements BeanPostProcessor  {
@Override public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
if (bean instanceof EurekaInstanceConfigBean) {
EurekaInstanceConfigBean properties = (EurekaInstanceConfigBean) bean; String instanceId = properties.getInstanceId(); System.out.println("Old InstanceID: " + instanceId); instanceId = UUID.randomUUID().toString(); // 修改ID properties.setInstanceId(instanceId); } return null; }}

这样在注册中心我们就可以看见我们自定义的ID。

这里主要是找到配置文件中对应配置的Config对象。

下面是SpringCloud consul动态修改实例ID的示例,Consul的配置实例为org.springframework.cloud.consul.discovery.ConsulDiscoveryProperties类:

@Componentpublic class ConsulConfigPostProcessorDemo implements BeanPostProcessor  {
@Override public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
if (bean instanceof ConsulDiscoveryProperties) {
ConsulDiscoveryProperties properties = (ConsulDiscoveryProperties) bean; String instanceId = properties.getInstanceId(); System.out.println("InstanceID: " + instanceId); instanceId += "__MODIFY"; properties.setInstanceId(instanceId); } return null; }}

参考

[1].

转载地址:http://acqof.baihongyu.com/

你可能感兴趣的文章
剑指offer 59. 把字符串转换成整数
查看>>
剑指offer 60. 不用加减乘除做加法
查看>>
剑指offer 61. 求1+2+3+...+n
查看>>
剑指offer 62. 孩子们的游戏
查看>>
剑指offer 63.扑克牌顺子
查看>>
剑指offer 64. 翻转单词顺序列
查看>>
剑指offer 65. 左旋转字符串
查看>>
剑指offer 66. 和为S的两个数字
查看>>
leetcode 热题 Hot 100-5. 二叉树的最大深度
查看>>
leetcode 热题 Hot 100-2. 有效的括号
查看>>
leetcode 热题 Hot 100-3. 合并两个有序链表
查看>>
leetcode 热题 Hot 100-4. 对称二叉树
查看>>
Leetcode C++《热题 Hot 100-12》226.翻转二叉树
查看>>
Leetcode C++《热题 Hot 100-13》234.回文链表
查看>>
Leetcode C++《热题 Hot 100-14》283.移动零
查看>>
Leetcode C++《热题 Hot 100-15》437.路径总和III
查看>>
Leetcode C++《热题 Hot 100-16》448.找到所有数组中消失的数字
查看>>
Leetcode C++《热题 Hot 100-17》461.汉明距离
查看>>
Leetcode C++《热题 Hot 100-18》538.把二叉搜索树转换为累加树
查看>>
Leetcode C++《热题 Hot 100-19》543.二叉树的直径
查看>>