当前环境是JDK1.8,Springboot采用的是2.0.6版本。采用GIT存储配置文件。在GIT中的文件名以几种格式(重要,如果文件名不对是取不到文件的):
1、{application}/{profile}[/[label]]
2、{application}-{profile}.yml
3、{application}-{profile}.properties
4、{label}/{application}-{profile}.yml
5、{label}/{application}-{profile}.properties
我这里定义的文件名为dev-b.properties,访问路径为ssh://root@10.115.132.12:/data/git/config.git。由于是我自己在Linux系统上搭建的一个简单的GIT服务,并没有设置APACHE访问,因此需要通过SSH进行访问。
下一步开始搭建CONFIG服务
首先修改pom.xml文件,增加spring-cloud-config-server依赖,代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<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.example</groupId>
<artifactId>springboot-config</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>springboot-config</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Finchley.SR1</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
注意:由于我采用的是GIT,所以配置比较少,如果需要有SVN进行管理的话,则需要加入SVN的相关依赖:
<dependency>
<groupId>org.tmatesoft.svnkit</groupId>
<artifactId>svnkit</artifactId>
</dependency>
pom.xml修改完成后,修改application.properties文件,在文件中加入config相关配置,代码如下:
server.port=2345
spring.cloud.config.enabled=true
spring.cloud.config.server.git.uri=ssh://root@10.115.132.12:/data/git/config.git
spring.cloud.config.server.git.username=root
spring.cloud.config.server.git.password=111111
另外,如果用户非系统用户,如通过git用户创建的git服务,则可以进行如下配置,大概可以根据实际情况选择配置:
server.port=10000
spring.cloud.config.enabled=true
spring.cloud.config.server.git.uri=git@10.115.132.12:/home/git/cloud.git
spring.cloud.config.server.git.username=git
spring.cloud.config.server.git.password=111111
注意:如果采用SVN进行文件管理需要增加spring.profiles.active=subversion的配置信息,如:
server.port=2345
spring.profiles.active=subversion
spring.cloud.config.enabled=true
spring.cloud.config.server.svn.uri=https://localhost/svn
spring.cloud.config.server.svn.username=abc
spring.cloud.config.server.svn.password=abc
注意:如果采用本地的文件进行配置,增加增加spring.profiles.active=native的配置信息,如:
spring.profiles.active=native
spring.cloud.config.server.native.search-locations=F:/git/cloud/
最后在启动类加入启用配置服务功能注解,代码如下:
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;
@SpringBootApplication
@EnableConfigServer
public class SpringbootConfigApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootConfigApplication.class, args);
}
}
然后启动服务,通过访问http://localhost:2345/dev-b.properties来查询是还是配置成功,文件读取是否正常。
注意:当通过native本地化进行管理配置文件时,如果本地文件夹下面有一个application-dev.yml,所有config客户端会默认读取这个文件,用这个文件的配置信息,建议不用要用这个名称。如果有某些共用配置时,可以考虑用这个文件。