我们的每个有配置文件的服务都是config的客户端。客户端通过调用服务端获取远程仓库的配置文件,它自身不会和远程仓库做交互。
1、maven依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--config客户端-->
<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>
2、yml配置
PS:这里使用bootstrap.yml因为使用Config的原因项目需要在开始启动加载的时候就获得配置文件信息,bootstrap的加载优先级高于application所以使用Config的话需要将application.yml改为bootstrap.yml否则启动时会报错。
spring:
application:
name: config-client
cloud:
config:
#和下面的discovery互斥(不使用eureka 的话可以使用这种方式)
# uri:
# - http://localhost:8100
discovery:
enabled: true
# configserver的服务id,我们通过sever获取远程仓库的信息
service-id: config-server
profile: dev
label: master
server:
port: 8011
eureka:
instance:
instance-id: config-client
hostname: config-client
client:
service-url:
defaultZone: http://eurekaServer:8700/eurekaServer/eureka
#自定义配置
name: "this is name"
time: 123
3、java配置类
@EnableEurekaClient
@SpringBootApplication
public class ConfigClientApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigClientApplication.class, args);
}
}
4、编写一个测试类
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* Created by py
*/
@RefreshScope
@RestController
public class FirstController {
@Value("${name}")
private String name;
@Value("${time}")
private String time;
@RequestMapping("/firstConfig")
public String queryConfigInfo(){
System.out.println("name:"+name);
System.out.println("time:"+time);
return name+"=="+time;
}
}
5、启动服务
6、请求服务(获取到远程配置文件的信息)