栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

springboot 实现远程配置

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

springboot 实现远程配置

springboot 作为现在 java 开发必备框架,重要程度不言而喻
其中配置文件我们一般是写在 application.yml
所以这个时候就出现了一些问题:
比如说我们想要修改一些配置信息,比如说 redis 地址,数据库账号密码等,这个时候通常的做法是在工程里面修改后重新打包部署,非常麻烦。

开始我们在 springboot 启动类中添加

  public static void main(String[] args) {
    SpringApplication app = new SpringApplication(DemoApplication.class);
    app.addInitializers(new RemoteConfig());
    app.run(args);
  }

然后写 RemoteConfig 的实现

public class RemoteConfig implements ApplicationContextInitializer {

  @Override
  public void initialize(ConfigurableApplicationContext applicationContext) {
    //获取当前应用的环境
    ConfigurableEnvironment ce = applicationContext.getEnvironment();
    Properties properties = new Properties();
    properties.put("spring.datasource.url", getRemoteConfigedDbUrl("spring.datasource.url"));
    PropertiesPropertySource propertiesPropertySource = new PropertiesPropertySource("remote", properties);
    ce.getPropertySources().addFirst(propertiesPropertySource);
  }

  private String getRemoteConfigedDbUrl(String propertname) {
    return "jdbc:mysql://localhost:3306/test";
  }
}

其中的getRemoteConfigedDbUrl 就是一个例子
开始 applicationContext,getEnvironment 获取当前应用的环境
一般来说,一个环境可能有好几个配置文件,也就是好几个PropertiesPropertySource 类,这个时候我们希望优先读取我们的远程配置怎么办呢,很简单,把它放到第一个就好了,即 ce.getPropertySources().addFirst();
如果有相同的配置的话,先读第一个,后面的无法覆盖,但请注意,其他的配置也是有效的,未覆盖到的都会加载进来

但是如何实现远程配置呢?
我的思路是再起一个应用,用来读 redis 缓存,然后 properties.put 就放入从 redis 中读取的数据,也就实现了远程配置

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/425554.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号