配置中心被用做集中管理不一样环境和不一样集群配置,以及在修改配置以后能将修改的配置即便的更新到系统。git
配置的客户端在启动的时候活像配置服务端发请求,服务端在接收到客户端的请求以后会在以前配置好的地址去git残酷拉去一份配置到本地,建立一个临时文件,这个目录就是一个git的本地仓目录,而后服务端读取本地文件返回给客户端。这样作的好处就是,当git服务器故障或者网路出现异常后仍然能够工做。web
服务端和客户端公共的依赖以下:spring
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
复制代码
server端的依赖以下:bootstrap
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
复制代码
服务端的配置:安全
spring:
cloud:
config:
server:
git:
uri: https://gitee.com/chendom/SpringCloudConfig.git
username: xx
password: xx
search-paths: config
application:
name: config-server
server:
port: 8098
复制代码
启动类:服务器
@SpringBootApplication
@EnableConfigServer
public class ConfigGitApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigGitApplication.class,args);
}
}
复制代码
客户端的依赖以下:app
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-client</artifactId>
</dependency>
复制代码
客户端配置以下:dom
server:
port: 8099
spring:
application:
name: config-client
cloud:
config:
label: master
uri: http://localhost:8098
name: client-config
profile: dev
复制代码
测试类的代码spring-boot
@RestController
@RequestMapping("/demo")
public class DemoController {
@Value("${springcloud.configserver}")
private String value;
@RequestMapping("/getValue")
public String getValue(){
return value;
}
}
复制代码
分别启动服务端和客户端微服务
访问http://localhost:8098/client-config/dev/master
访问http://localhost:8099/demo/getValue
pom依赖:
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-client</artifactId>
</dependency>
<!--简单的安全和端点开放-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
</dependencies>
</project>
复制代码
bootstrap.yml配置文件
server:
port: 8100
spring:
application:
name: refresh-config-client
cloud:
config:
label: master
uri: http://localhost:8098
name: client-config
profile: dev
management:
endpoints:
web:
exposure:
include: '*'
endpoint:
health:
show-details: always
复制代码
请求
@RestController
@RequestMapping("/demo")
@RefreshScope//刷新注解
public class DemoController {
@Value("${springcloud.configserver}")
private String value;
@RequestMapping("/getValue")
public String getValue(){
return value;
}
}
复制代码
咱们知道以前的配置是这样的 springcloud: configserver: this is test dev
如今该成以下图所示的样子:
此时若是没有刷新仍是访问http://localhost:8100/demo/getValue仍是不会有变化
此时咱们能够访问 Post:http://localhost:8100/actuator/refresh
访问 http://localhost:8100/demo/getValue
以上就完成了手动刷新的例子,可是微服务通常服务都不少,若是有个别的例子没有进行刷新就极可能出现错误,开锁因此就须要使用到自动刷新