本博文将介绍Springcloud Config Server服务如何通过简单配置切换本地和远程配置文件的读取
1.项目目录
2.配置文件
application.yml
#通过spring.profiles.active实现配置切换,当native读取本地配置,git读取远程配置
server:
port: 18100
spring:
application:
name: config-server
profiles:
active: native # native读取本地配置,git读取远程配置
security:
basic:
enabled: true
user:
name: admin
password: 111111
cloud:
config:
discovery:
enabled: true
service-id: configer-server
eureka:
instance:
hostname: ${spring.cloud.client.ipaddress}
preferIpAddress: false
instanceId: ${spring.cloud.client.ipaddress}:${server.port}
server:
peer-node-read-timeout-ms: 2000
client:
serviceUrl:
defaultZone: http://${register.username}:${register.password}@localhost:15430/eureka/
register:
username: admin
password: 111111
application-git.yml #远程配置
# 配置git的地址及用户名密码
spring:
cloud:
config:
server:
git:
uri: http://gitlab/config/my-config.git
search-paths: config
username: config
password: 111111
application-native.yml 本地配置
spring:
cloud:
config:
server:
native:
searchLocations: /Users/xx/config-server
3.配置访问
(1)本地配置访问 spring.profiles.active配置为native时
在本地 /Users/xx/config-server目录创建一个test-dev.yml,内容如下:
source: native
浏览器输入http://localhost:18100/test/dev
{"name":"test","profiles":["dev"],"label":null,"version":null,"state":null,"propertySources":[{"name":"file:/Users/xx/config-server/test-dev.yml","source":{"source":"native"}}]}
(2)远程配置访问 spring.profiles.active配置为git时
gitlab上创建my-config项目,添加test-dev.yml配置文件
浏览器输入http://localhost:18100/test/dev/main
{"name":"test","profiles":["dev"],"label":"main","version":null,"state":null,"propertySources":[{"name":"gitlab/config/my-config.git/config/test-dev.yml","source":{"source":"git"}}]}
4.配置中心pom.xml
<?xml version="1.0"?>
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>cn.ch.mind</groupId>
<artifactId>cloud-xx-cloud</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>cloud-boss-config-server</artifactId>
<name>cloud-boss-config-server</name>
<url>http://maven.apache.org</url>
<packaging>jar</packaging>
<description>配置中心</description>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
<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>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
</dependencies>
</project>
5.客户端如何获取配置
客户端配置yml文件做配置如下说明
当配置文件名称文test-dev.yml时
(1)服务名称为test
(2)profile为dev
(3)label为git的分支名称,本地配置时可以不写
spring:
application:
name: test #服务名称,需要与文件名称对应
cloud:
config:
discovery:
enabled: true
service-id: config-server
profile: dev #文件名后半部分对应 test-dev.yml时 profile为dev
label: main #分支
username: admin
password: 111111
eureka:
instance:
hostname: localhost
preferIpAddress: false
instanceId: ${spring.cloud.client.ipaddress}:${server.port}
client:
serviceUrl:
defaultZone: http://${register.username}:${register.password}@localhost:15430/eureka/
enabled: true
register:
username: admin
password: 111111