1.新建Config客户端
项目名称:cloud-config-client-3355
鼠标点击父工程项目右击 —> New —> Module
具体创建步骤参考【搭建EurekaServer端服务注册中心】
2.添加 pom.xml
<dependencies>
<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>
<dependency>
<groupId>com.cloud</groupId>
<artifactId>cloud-api-commons</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
3.添加 bootsrap.yml
application.yml 是用户级的资源配置项
bootstrap.yml 是系统级的,优先级更加高
Spring Cloud会创建一个 “Bootstrap Context”,作为Spring应用的 Application Context 的父上下文。初始化的时候,Bootstrap Context 负责从外部源加载配置属性并解析配置,这两个上下文共享一个从外部获取的 Environment。
Bootstrap 属性有高优先级,默认情况下,它们不会被本地配置覆盖。Bootstrap Context 和 Application Context 有着不同的约定,所以新增一个 bootstrap.yml 文件 保证 Bootstrap Context 和 Application Context配置的分离。
要将 Client模块下的 application.yml文件改为bootstrap.yml这是很关键的
因为bootstrap.yml是比application.yml先加载的。bootstrap.yml优先级高于 application.yml
配置内容:
server:
port: 3355
spring:
application:
name: config-client
cloud:
config: #Config客户端配置
enabled: true #是否启用配置中心功能,默认true是开启的
label: master #githup/gitee分支名称
name: config #配置文件名称
profile: dev #读取后缀名称 ,根据上面三个配置:master分支上的config-dev.yml的配置文件被读取http://localhost:3344/master/config-dev.yml
uri: http://localhost:3344 #配置中心地址
eureka:
client:
service-url:
defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka
4.添加主启动类
@EnableEurekaClient
@SpringBootApplication
public class ConfigClientApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigClientApplication.class, args);
}
}
5.添加控制器类和数据实体类
Config客户端获取Config配置中心端中的配置文件里的数据
添加数据Bean,@ConfigurationProperties指定配置文件数据Key的前缀
@Data
@Component
@ConfigurationProperties(prefix = "data")
public class GitConfigData {
private String port;
private String name;
private String info;
}
配置中心服务端配置文件内容如下:
data:
port: 9999
name: "测试"
info: "config info for dev(master)"
控制器类内容如下:
@RestController
public class ConfigClientController {
@Autowired
private GitConfigData gitConfigData;
@GetMapping("/configInfo")
public GitConfigData getConfigInfo() {
return gitConfigData;
}
}
6.启动并测试
启动Eureka注册中心:cloud-eureka-server7001,cloud-eureka-server7002
启动配置中心:cloud-config-center-3344
启动Config客户端:cloud-config-client-3355
浏览器输入:http://localhost:3344/config-dev.yml
返回如下内容:
{"port":"9999","name":"测试","info":"config info for dev(master)"}
成功实现了客户端3355访问SpringCloud Config3344通过GitHub获取配置信息