在实际开发过程中,每个服务都有大量的配置文件,例如数据库的配置、日志输出级别的配置等,而往往这些配置在不同的环境中也是不一样的。随着服务数量的增加,配置文件的管理也是一件非常复杂的事

在微服务架构中,需要有统一管理配置文件的组件,例如 Spring Cloud 的 Spring Cloud Config、阿里的 Diamond、百度的 Disconf、携程的 Apollo 等

新建 spring-cloud-config-server

从本地读取配置

pom

<parent>
<artifactId>spring-cloud-parent</artifactId>
<groupId>com.karonda</groupId>
<version>1.0.0</version>
</parent>
<modelVersion>4.0.0</modelVersion> <artifactId>spring-cloud-config-server</artifactId> <dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
</dependencies> <build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

application.yml

server:
port: 8061 spring:
application:
name: config-server profiles:
active: native # 从本地读取配置 cloud:
config:
server:
native:
search-locations: classpath:/shared # 本地配置路径

新建配置文件 shared/eureka-client-dev.yml

version: 1.0.0

启动类

@EnableConfigServer // 开启 Config Server
@SpringBootApplication
public class ConfigServerApp {
public static void main(String[] args){
SpringApplication.run(ConfigServerApp.class, args);
}
}

测试

启动 config-server

访问 http://localhost:8061/eureka-client/dev 可以看到配置

在客户端使用

在 eureka-client 测试

添加依赖

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>

添加配置 bootstrap.yml

spring:
application:
name: eureka-client cloud:
config:
uri: http://localhost:8061
fail-fast: true profiles:
active: dev

bootstrap.yml 优先于 application.yml

修改测试代码

@RestController
public class HiController { @Value("${server.port}")
int port; @Value("${version}")
String version; @GetMapping("/hi")
public String home(@RequestParam String name){
return "Hello " + name + ", from port: " + port + ", version: " + version;
}
}

测试

  1. 启动 config-server
  2. 启动 eureka-server
  3. 启动 eureka-client

访问 http://localhost:8011/hi?name=Victor

从远程 Git 仓库读取配置

修改 application.xml

server:
port: 8061 spring:
application:
name: config-server # profiles:
# active: native # 从本地读取配置 cloud:
config:
server:
# native:
# search-locations: classpath:/shared # 本地配置路径
git:
uri: https://github.com/VictorBu/spring-cloud-config-demo
search-paths: repo # 搜索的文件夹地址
# username: # 如果是私有仓库须配置
# password: # 如果是私有仓库须配置
label: master # git 仓库分支名

测试

参考上节

完整代码:GitHub

本人 C# 转 Java 的 newbie, 如有错误或不足欢迎指正,谢谢

最新文章

  1. C++基础知识
  2. java实现双链表(差点没写吐系列...)
  3. 使用js和jq去掉左右空格方法
  4. bzoj1977 [BeiJing2010组队]次小生成树 Tree
  5. ThinkPHP之中的图片上传操作
  6. ubuntu设置关闭屏幕和锁定
  7. Linux学习之路:变量值的删除、替代和替换
  8. Android--应用开发1(应用程序框架)
  9. [React] React Fundamentals: Build a JSX Live Compiler
  10. js - 多个函数动态加载
  11. bootstrap table笔记
  12. Spark集群搭建中的问题
  13. 【CSS初识】
  14. Python3 tkinter基础 Radiobutton indicatoron 改变按钮的外观 圆形/方形
  15. ionic中执行pop返回上一个页面,还需要执行操作
  16. AJAX异步请求,局部刷新
  17. 豆瓣电影 Top 250
  18. Spring Cloud 快速教程
  19. es 模板
  20. [原][osg][osgEarth]osg::Matrix 父子节点的变化关系

热门文章

  1. 转载-Eclipse无法打开Eclipse MarketPlace的解决办法
  2. Android Google官方文档解析之——Device Compatibility
  3. 2.1 自定义日志系统-log4net
  4. 准备数据集用于flink学习
  5. Spring Security验证,提示正确的信息
  6. CVE-2020-0769逆向分析
  7. 【JVM第四篇--运行时数据区】堆
  8. 《GNU_makefile》第六章——变量
  9. LeetCode 中等题解(2)
  10. Weblogic CVE-2020-2551漏洞复现&amp;CS实战利用