SpringCloud 配置中心的使用方法
前言网上找了配置中心的文章,发现多多少少都有点坑的地方。这文章是建立在Spring-cloud Dalston.RELEASE 版本上,请试用时确定版本是否兼容。像是eureka等,在不同版本的spring cloud,pom依赖都是不同的。当一个系统中的配置文件发生改变的时候,我们需要重新启动该服务,才能使得新的配置文件生效,spring cloud config可以实现微服务中的所有系统的..
前言
网上找了配置中心的文章,发现多多少少都有点坑的地方。这文章是建立在Spring-cloud Dalston.RELEASE 版本上,请试用时确定版本是否兼容。像是eureka等,在不同版本的spring cloud,pom依赖都是不同的。
当一个系统中的配置文件发生改变的时候,我们需要重新启动该服务,才能使得新的配置文件生效,spring cloud config可以实现微服务中的所有系统的配置文件的统一管理,而且还可以实现当配置文件发生变化的时候,系统会自动更新获取新的配置。
我们将配置文件放入git或者svn等服务中,通过一个Config Server服务来获取git中的配置数据,而我们需要使用的到配置文件的Config Client系统可以通过Config Server来获取对应的配置。
步骤
1.向git中上传示例配置文件
文件名:servicestation-dev.properties、servicestation-pro.properties
文件内容
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/testproject
jdbc.username=root
jdbc.password=root
对应不同环境。
该文件的命名规则是:{application}-{profile}.properties
2.搭建Config Server
2.1 添加依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
2.2 编写ConfigApplication
// @EnableDiscoveryClient // eureka先不加,一会加
@EnableConfigServer //开启配置服务
@SpringBootApplication
public class ConfigApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigApplication.class, args);
}
}
2.3 配置server端配置文件
spring.application.name=config-server
server.port=8888
spring.cloud.config.server.git.uri=https://github.com/xxx/config/
spring.cloud.config.server.git.searchPaths=conf
spring.cloud.config.label=master
spring.cloud.config.server.git.username=....
spring.cloud.config.server.git.password=....
启动该服务,访问该配置文件:
http://localhost:8888/servicestation-dev.properties
其他访问方式:
/{application}/{profile}/[label]
/{application}-{profile}.yml
/{label}/{application}-{profile}.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties
其中{label}是指分支,默认是master。
到这步,server端已经启动成功,并且能读到git上的配置文件了,下面建立客户端。
3. Config Client的搭建
3.1 添加依赖 pom.xml
<dependencies>
<!-- 必填,不能忽略 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
</dependencies>
3.2 添加bootstrap.yml配置文件
注意:微服务启动时,客户端
会先加载bootstrap.yml文件
,并从服务端
获取配置信息后才加载本地的application.yml
文件,所以连接server端的配置信息必须写在bootstrap.yml文件中。
server:
port: 9008
spring:
cloud:
config:
uri: http://localhost:8888 #配置中心的地址
profile: dev
label: master
application:
name: servicestation # 当前微服务的名称
在客户端依然可以配置profile,label,application三个信息,服务端就是依据这三个信息匹配到对应的配置文件
例如上面的配置信息,就是告诉配置中心服务端去git取 servicestation-dev.properties或servicestation-dev.yml文件
添加测试类,测试下配置是否读取到
添加这样一个测试配置的bean
@Component
public class JdbcConfigBean {
@Value("${jdbc.url}")
private String url;
@Value("${jdbc.username}")
private String username;
@Value("${jdbc.password}")
private String password;
@Value("${jdbc.driverClassName}")
private String driverClassName;
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getDriverClassName() {
return driverClassName;
}
public void setDriverClassName(String driverClassName) {
this.driverClassName = driverClassName;
}
@Override
public String toString() {
return "JdbcConfigBean [url=" + url + ", username=" + username
+ ", password=" + password + ", driverClassName="
+ driverClassName + "]";
}
}
如果项目启动报错,例如:
说明没读取到配置,请检查配置是否正确。反之如果启动成功,则是读取到了配置文件。
4. 服务端和客户端加上eureka注册中心
在以上步骤都成功后,方可继续
4.1 服务端的改造
把eureka注册中心服务依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
application.properties加上eureka的配置
# 是否注册eureka服务中心
eureka.client.register-with-eureka=true
# eureka地址 你的eureka地址
eureka.client.serviceUrl.defaultZone: http://localhost:11111/eureka/
启动类加上注解:
@EnableDiscoveryClient
启动eureka,启动config-server,如下图:
4.2 客户端的改造
1.添加pom依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
2.修改配置文件
spring:
cloud:
config:
discovery:
enabled: true #开启通过服务来访问Config Server的功能
service-id: config-server # 配置中心的application.name
profile: dev
label: master
application:
name: servicestation
#服务注册中心实例的主机名、端口
#是否向服务注册中心注册自己
#表示是否从eureka服务器获取注册信息
#服务注册中心的配置内容,指定服务注册中心的位置
eureka:
port:11111
instance:
hostname: localhost
client:
register-with-eureka: true
fetch-registry: true
serviceUrl:
defaultZone: http://${eureka.instance.hostname}:${eureka.port}/eureka/
3.启动类加上注解
@EnableEurekaClient
4.启动客户端
成功启动,结束
更多推荐
所有评论(0)