最近自己想搞一个项目,涉及到了配置文件集中管理这块,所以简单的就把案例分享给大家,因为懒,并没有实现热部署,等项目发展需要后在搞。
文章内容比较简单
我们把配置拿出去集中管理的好处有很多,比如实现配置不会冗余在项目中、众多个服务重复性的配置可以集中在一个文件管理,项目中个性化的项目还可以留在项目中写、项目稳定后这些配置可以交给运维单独管理了。
在贴代码之前我们要知道几件事
本文环境
框架 | 版本 |
---|---|
Spring Boot | 2.0.3.RELEASE |
Spring Cloud | Finchley.RELEASE |
JDK | 1.8.0_144 |
项目中父pom
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Finchley.RELEASE</spring-cloud.version>
</properties>
<modules>
<module>user-service</module>
<module>config</module>
</modules>
<developers>
<developer>
<name>yanlin</name>
<email>362460453@qq.com</email>
</developer>
</developers>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.3.RELEASE</version>
<relativePath/>
</parent>
<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>
</dependencies>
config服务需要添加依赖
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
</dependencies>
在config服务添加application.yml文件
spring:
cloud:
config:
server:
git:
uri: https://github.com/doctor-of-personal-animals/dopa-config.git
#username:
#password:
search-paths:
application:
name: sc-config-git
server:
port: 9090
如果在上面的github地址下还有一个层目录的话search-paths 参数就是那个文件夹。有密码和用户名就填写。
当然我们还要在github添加我们到文件
在我们config启动类加上注解,表明是一个配置服务
@EnableConfigServer
客户端的pom
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-client</artifactId>
</dependency>
</dependencies>
创建bootstrap.yml 文件
spring:
cloud:
config:
label: master
uri: http://localhost:9090
name: config-info
profile: dev
创建application.yml 文件
server:
port: 9091
spring:
application:
name: user-service
这里的两个配置文件中bootstrap 加载顺序在application 之前。
到这里 springcloud Config访问github配置文件最简单的配置就完成了,下面我们在 config客户端写一个接口测试一下
@RestController
public class UserController {
@Value("${spring.cloud}")
private String config;
@GetMapping("/test/config")
public String test() {
return config;
}
}
先启动 config服务,在启动 config客户端,访问http://localhost:9091/test/config