1、基本概念和方案
Spring config 项目提供了一个解决分布式系统的配置管理方案。它包含了Client和Server两个部分。
Spring cloud config Server 管理git或svn的外部配置,集中配置到所有客户端。
Spring cloud config Client 根据Spring框架的Environment和PropertySource从Spring cloud config Server 获取配置。
逻辑架构图如下:
Spring cloud config Server统一管理存储在git或者svn的配置文件,各子系统A、B集成Spring cloudconfig Client,并从Spring cloud config Server端获取相关的配置。
Spring cloud config Server 可通过Eureka Server支持集群负载均衡。
2、搭建Config Server
第一步:创建一个spring boot 项目,config-server,pom.xml如下
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.test</groupId>
<artifactId>config-server</artifactId>
<version>0.0.1-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
<relativePath />
</parent>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Camden.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<dependency>
<groupId>org.tmatesoft.svnkit</groupId>
<artifactId>svnkit</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
第二步:新建一个启动类Application
@SpringBootApplication
@EnableConfigServer
public class Application
{
public static void main(String[] args)
{
SpringApplication.run(Application.class, args);
}
}
第三步:新建配置文件(src/main/resources),application.properties
SVN配置:(默认读取spring-config/trunk下的配置文件,根据实际情况修改)
server.port=9955
spring.profiles.active=subversion
spring.cloud.config.server.svn.uri=http://127.0.0.1:8090/svn/spring-config
spring.cloud.config.server.svn.username=test
spring.cloud.config.server.svn.password=test
#spring.cloud.config.server.svn.search-paths={application}
spring.cloud.config.server.svn.default-label=trunk
#spring.cloud.config.server.svn.basedir=/data
Git配置:
server.port=9955
spring.cloud.config.server.git.uri=https://github.com/huanghuixj/springcloudconfig.git
#spring.cloud.config.server.git.searchPaths=respo
spring.cloud.config.label=master
#spring.cloud.config.server.git.username=test
#spring.cloud.config.server.git.password=test
- spring.cloud.config.server.git.uri:配置git仓库地址
- spring.cloud.config.server.git.searchPaths:配置仓库路径
- spring.cloud.config.label:配置仓库的分支
- spring.cloud.config.server.git.username:访问git仓库的用户名
- spring.cloud.config.server.git.password:访问git仓库的用户密码
第四步:构建并启动程序,测试访问
浏览器中输入,http://127.0.0.1:9955/jdbc-test.properties,或者http://127.0.0.1:9955/jdbc/test
3、搭建Config Client
第一步:创建一个Spring boot项目,config-client,pom.xml如下
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.tesr</groupId>
<artifactId>config-client</artifactId>
<version>0.0.1-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
<relativePath />
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-client</artifactId>
<version>1.4.0.RELEASE</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
第二步:新建配置文件(src/main/resources),bootstrap.properties
#multiple files separated by commas ","
spring.cloud.config.name=jdbc,log
spring.cloud.config.profile=test
#if svn server then trunk, if git server then master
spring.cloud.config.label=trunk
#spring cloud server address
spring.cloud.config.uri=http://127.0.0.1:9955
第三步:新建启动测试类Application,浏览器shuru
@SpringBootApplication
@RestController
public class Application
{
public static void main(String[] args)
{
SpringApplication.run(Application.class, args);
}
@Value("${foo}")
private String foo;
@RequestMapping(value = "/hi")
public String hi()
{
return foo;
}
}
4、Demo下载,Git地址