SpringCloud组件之配置中心Config(Hoxton版本)
1.Config简介
在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件。在Spring Cloud中,有分布式配置中心组件spring cloud config ,它支持配置服务放在配置服务的内存中(即本地),也支持放在远程Git仓库中。在spring cloud config 组件中,分两个角色,一是config server,二是config client。server提供配置文件的存储、以接口的形式将配置文件的内容提供出去,client通过接口获取数据、并依据此数据初始化自己的应用。
2.创建配置中心服务端工程
目前SpringCloud Config的使用主要是通过Git/SVN方式做一个配置中心,然后每个服务从其中获取自身配置所需的参数。SpringCloud Config也支持本地参数配置的获取。如果使用本地存储的方式,在 application.properties 或 application.yml 文件添加 spring.profiles.active=native 配置即可,它会从项目的 resources路径下读取配置文件。如果是读取指定的配置文件,那么可以使用 spring.cloud.config.server.native.searchLocations = file/properties/ 来读取。本文中使用git文件配置作为演示
2.1 准备工作
启动上篇中Eureka演示工程中Eureka Server
2.2 创建项目
新建一个maven工程,取名为:spring-cloud-config-server,添加如下依赖pom.xml中
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>spring-cloud-demo</artifactId>
<groupId>com.hxmec</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>spring-cloud-config-server</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- config server依赖包-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
新建application.yml,增加下面的配置
server:
port: 9005
spring:
application:
name: config-server
cloud:
config:
label: master
server:
git:
#github配置地址
#如果Git仓库为公开仓库,可以不填写用户名和密码,如果是私有仓库需要填写,本例子是公开仓库,放心使用。
uri: https://github.com/ty1972873004/spring-cloud-config.git
#配置文件路径
search-paths: appconfig
#username:
#password:
#git分支
default-label: master
logging:
pattern:
console: '%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{15} - %msg%n'
eureka:
client:
service-url:
defaultZone: http://localhost:8888/eureka/
创建一个启动类 ConfigServerApplication,并加上@EnableConfigServer注解开启配置服务器的功能。
@SpringBootApplication
@EnableConfigServer
@EnableDiscoveryClient
public class ConfigServerApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigServerApplication.class, args);
}
}
远程仓库https://github.com/ty1972873004/spring-cloud-config.git 中有个文件config-client-dev.yml 文件中有一个属性: 启动程序可通过访问http://localhost:9005/config-client/dev 验证是否成功获取配置
springcloud config 的URL与配置文件的映射关系如下:
- /{application}/{profile}[/{label}]
- /{application}-{profile}.yml
- /{label}/{application}-{profile}.yml
- /{application}-{profile}.properties
- /{label}/{application}-{profile}.properties
3.创建配置中心客户端演示工程
新建一个maven工程,取名为:spring-cloud-config-client,添加如下依赖pom.xml中
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>spring-cloud-demo</artifactId>
<groupId>com.hxmec</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>spring-cloud-config-client</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- config client依赖包-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
新建bootstrap.yml,增加下面的配置 config相关配置一定要配置在boostrap.yml中
spring:
application:
name: config-client
cloud:
config:
uri: http://127.0.0.1:9005/
label: master
profile: dev
name: ${spring.application.name}
discovery:
enabled: true
service-id: config-server
server:
port: 9006
logging:
pattern:
console: '%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{15} - %msg%n'
eureka:
client:
service-url:
defaultZone: http://localhost:8888/eureka/
创建一个启动类 ConfigClientApplication
@SpringBootApplication
@EnableDiscoveryClient
public class ConfigClientApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigClientApplication.class, args);
}
}
编写DemoController添加一个演示接口从配置中心获取配置
@RestController
@RequestMapping("/demo")
@Slf4j
public class DemoController {
@Value("${hx.name:#{null}}")
private String name;
@GetMapping(value = "/test1")
public String test1(){
return "Hello " + name;
}
}
访问http://localhost:9006/demo/test1 验证是否从配置中心获取
4.工程地址
https://github.com/ty1972873004/spring-cloud-demo
还没有评论,来说两句吧...