config
分布式配置中心
在大量的集群中,各种工程都需要属性的配置properties文件
一旦出现属性的共享,例如redis配置,es配置,数据库配置;各自工程维护起来比较麻烦,而且更新不及时;
微服务框架提供一个共享的分布式配置中心,所有的服务注册者都可以是分布式配置中心的客户端,通过中心管理的github上的配
置文件,实现共享配置;
github: 开源的资源,代码,框架,技术分享的网站和git有个相同的特点,就是资源可以实现回滚和版本控制;
每个不同的用户可以拥有免费的和付费的github资源,使用线下的git向github传递数据;
git:软件版本管理器,资源管理器
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
服务端
@SpringBootApplication
@EnableConfigServer 标识
这里很好奇,为什么config的配置文件命名是bootstrap
这是由spring boot的加载属性文件的优先级决定的,你想要在加载属性之前去spring cloud config server上取配置文件,
那spring cloud config相关配置就是需要最先加载的,而bootstrap.properties的加载是先于application.properties的,
所以config client要配置config的相关配置就只能写到bootstrap.properties里了
bootstrap.properties
spring.application.name=config-server
server.port=8098
spring.cloud.config.server.git.uri=https://github.com/duzhenguo/springcloud 你github/码云的地址
spring.cloud.config.server.git.searchPaths=/config
searchPaths定义了配置文件搜索的位置,可以配置多个,多个之间用逗号分隔,这样多个微服务就可以在配置中心有自己的配置文件
spring.cloud.config.label=master
spring.cloud.config.server.git.username=你github/码云的登陆用户名
spring.cloud.config.server.git.password=对应的密码
客户端
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
@SpringBootApplication
@RestController
public class HiController {
@Value("${name}")
private String name;
@Value("${age}")
private String age;
@RequestMapping("/")
public String printPro(){
return name+"/"+age;
}
}
bootstrap.properties
server.port=8101
spring.application.name=对应的文件的名字
spring.cloud.config.profile=test 这个不清楚 网上找了有人用的prod 解释说对应上面的profile 不理解
spring.cloud.config.label=master
spring.cloud.config.uri=http://localhost:8100