实现步骤:开发工具:eclipse IDE 4.0以上版本 环境 :jdk1.8 eclipse插件:Spring Tools 3.9.5版本 maven3.5.2版本
第一步:创建一个springboot父工程工程,名字自定义,创建时记得勾选web依赖进来,这样子项目就不用重复引入了(创建时应该可以直接把打包类型jar改成pom,我没试过,我是创建好后手动改成pom文件的),工程pom文件文件如下
<?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.ylms</groupId>
<artifactId>my-spring-cloud</artifactId>
<version>1.0</version>
<!-- 这里就是前面说的把jar改成pom,不然创建不了子工程的 -->
<packaging>pom</packaging>
<name>spring-cloud</name>
<description>springcloud-parent-projects</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<!-- 改用2.0.4版本我的会报错健康检查类找不到,直接回退一个版本正常了-->
<version>2.0.3.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 版本 ,这个版本匹配springboot2.0-->
<spring-cloud.version>Finchley.RELEASE</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<!-- 引入的web依赖 -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</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>
<modules>
<!-- 这里是创建子项目时自动生成的 -->
<module>my-SpringCloudConfigServer</module>
<module>my-SpringCloudConfigClient</module>
</modules>
</project>
第二步:创建子项目 ,取名为my-SpringCloudConfigServer 即为配置文件服务端,pom文件结构如下:
<?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>com.ylms</groupId>
<artifactId>my-spring-cloud</artifactId>
<version>1.0</version>
</parent>
<artifactId>my-SpringCloudConfigServer</artifactId>
<name>my-SpringCloudConfigServer</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!--引入服务端依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</project>
第三步:在当前项目创建一个启动类,在类头上引入两个注解@SpringBootApplication和@EnableConfigServer
第四步:创建源文件夹目录src/main/resources (如果已经存在改目录,忽略),在该目录下创建application.yml文件,内容如下
server:
port: 8900
spring:
application:
#应用名称,该值好像要和工程名一致,我没深究。。。
name: my-SpringCloudConfigServer
profiles:
#读取本地文件
# active: native
#读取git仓库文件
active: git
cloud:
config:
server:
# native:
# 读取本地文件路径在项目根目录的shared文件夹下
# search-locations: classpath:/shared
#如果从git远程仓库读取配置文件,即打开下面的配置,并把上面的native和值注释掉
git:
#填写远程仓库路径
uri: 填写你的远程仓库路径
#填写远程仓库里要读取的配置文件,该配置文件取名要注意哦,要和下面的客户端子工程项目里的配置对应!!!!
search-paths: config-client-dev.properties
#如果仓库配置了就打开用户名和密码
# username:
# password:
default-label: master
第五步:如果要实现本地读取配置文件就进行以下步骤:在src/main/resources目录下创建一个目录命名为shared,并放入配置文件config-client-dev.properties,该文件就是客户端将要读取的本地文件(其实是服务端读取,然后提供给客户端而已)。内容如下:
#客户端服务
server:
port: 8901
#用来测试的值
foo: foo version 3
配置好后,记得把第四步的配置文件内容配置好,以免后面测试报错
第六步:再次创建一个子工程取名:my-SpringCloudConfigClient 即为客户端,pom文件内容如下
<?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>com.ylms</groupId>
<artifactId>my-spring-cloud</artifactId>
<version>1.0</version>
</parent>
<artifactId>my-SpringCloudConfigClient</artifactId>
<name>my-SpringCloudConfigClient</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!--引入客户端依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</project>
第七步:在当前项目下创建源文件夹目录src/main/resources(如果已存在则忽略),放入文件bootstrap.yml ,内容如下
spring:
application:
#值要和将要读取的配置文件一致
name: config-client
profiles:
#值要和将要读取的配置文件一致 和上面的name值拼接成config-client-dev,顾名思义就是上面第五步放入的配置文件
active: dev
cloud:
config:
#配置服务的端口,即客户端读取配置文件时要到这个端口读取
uri: http://localhost:8900
fail-fast: true
第八步:创建一个启动类,加上注解:@SpringbootApplication
第九步:创建一个contrioller层,用来对外访问测试用,内容如下:
@RestController
public class TestController {
//这里就是上面第五步设定的测试key:foo
@Value("${foo}")
private String foo;
@RequestMapping("/getFoo")
public String getfoo() {
return foo;
}
}
第十步:分别启动服务端和客户端,浏览器访问localhost:8091/getFoo,返回了 foo version 3,自此,配置成功完成!