SpringCloud Config可以将分布式部署的应用的配置文件进行集中化管理。将配置文件利用Git或SVN集中存放,修改更新后可以同步到分布式各个应用中。
1 Config Server端
作用:读取Git或SVN配置文件,形成服务API。 /ydma/course或/ydma-course.properties。
- 在SVN中定义properties配置文件
提示:对应svn配置文件放在ydma-configs/config路径下面。
/ydma-configs/config/ydma.properties
/ydma-configs/config/ydma-course.properties
/ydma-configs/config/ydma-direction.properties
- 创建config-server端项目,在pom.xml引入spring-cloud-config-server、spring-cloud-starter-config、svnkit
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.5.RELEASE</version>
</parent>
<dependencyManagement>
<dependencies>
<!-- spring-cloud-parent -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>
spring-cloud-starter-config
</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<dependency>
<groupId>org.tmatesoft.svnkit</groupId>
<artifactId>svnkit</artifactId>
</dependency>
</dependencies>
- 在application.properties文件中定义svn参数
server.port = 9988
spring.application.name=ydma-config
############SVN####################
spring.profiles.active=subversion
spring.cloud.config.server.svn.uri=https://192.168.30.177/svn/java30/ydma-configs/
spring.cloud.config.server.default-label=config
spring.cloud.config.server.svn.username=java
spring.cloud.config.server.svn.password=123
提示:对应svn配置文件放在ydma-configs/config路径下面。
/ydma-configs/config/ydma.properties
/ydma-configs/config/ydma-course.properties
/ydma-configs/config/ydma-direction.properties
- 定义启动类,开启ConfigServer注解
@SpringBootApplication
@EnableConfigServer
public class RunConfigBoot {
public static void main(String[] args) {
SpringApplication.run(RunConfigBoot.class, args);
}
}
- 启动程序,访问测试
http://localhost:9988/ydma/course http://localhost:9988/ydma-course.properties
2 Config Client
- 在pom.xml中定义spring-cloud-config-client、spring-boot-starter-actuator
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
2.在resources添加bootstrap.properties配置文件(去掉application.properties)
spring.cloud.config.name=ydma
spring.cloud.config.profile=course
spring.cloud.config.label=config
spring.cloud.config.uri=http://localhost:9988
management.endpoints.web.exposure.include=refresh,health,info
- 启动程序,client会自动加载Server端配置信息
3 Server端配置修改,刷新Client应用
使用actuator健康检查的/actuator/refresh服务(POST)即可。
- 使用curl工具
提示:下载curl工具包,配置系统PATH环境变量为I386目录。
// http://localhost:7004/actuator/refresh 指的是需要刷新的Client配置
curl -X POST http://localhost:7004/actuator/refresh
- 使用HttpClient工具编码(导入httpclient包)
(这个指的是在服务端创建一个测试类,进行“http://localhost:7001/actuator/refresh”这个地址的刷新,就可以把Server配置端修改的内容刷新到Client端)
CloseableHttpClient client = null;
client = HttpClients.createDefault();
HttpPost post = new HttpPost("http://localhost:7001/actuator/refresh");
CloseableHttpResponse response = client.execute(post);
int statusCode = response.getStatusLine().getStatusCode();
System.out.println(statusCode);