在微服务架构中,全局配置的重要性不言而喻。SpringCloud的全局配置存储主要基于 Git 来实现,即配置信息存储在Git服务器,以统一的方式对外提供访问。在使用上分为 ConfigServer和ConfigClient这两个角色。
一. ConfigServer的应用,这也是一个基于SpringBoot和web应用。启动后做为配置服务器对外提供访问。
1. application.properties文件配置
server.port=8888 spring.cloud.config.server.git.uri=https://gitee.com/xxxx/config-repo spring.cloud.config.server.git.username={帐号} spring.cloud.config.server.git.password={密码}
2 .pom文件主要内容
<dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </dependency> </dependencies>
3. 启动类
@SpringBootApplication @EnableConfigServer public class App { public static void main( String[] args ) { SpringApplication.run(App.class, args) ; } }
二. ConfigClient 即配置应用端 , 一般就是具体的要用到全局配置信息的项目
1. bootstrap.yml文件,由于配置统一放在git服务器上,所以各个应用就无需使用 application.yml 或者 application.properties文件
spring:
application:
name: mockservices
cloud:
config:
uri: http://127.0.0.1:8888
label: branch1 // 表示具体应用配置仓库中哪个分支
configClient客户端应用会应用到配置仓库中哪些配置文件由bootstrap.yml文件中的3个配置项决定:
- spring.application.name 它的value决定加载除 application.properties 或 application.yml 之外的配置文件名
- spring.cloud.config.label 决定具体应用配置仓库中哪个分支
- spring.profiles.active 决定加载哪些profile对应的配置
2. 应用配置的代码
@RunWith(SpringRunner.class) @SpringBootTest(classes = MockApp.class) public class ConfigTest { @Value("${name}") private String name ; @Test public void test() { System.out.println(name); } }
3. pom 文件的必要配置
<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-config</artifactId> </dependency> </dependencies>