一、开发工具:
STS4
二、JDK 8
三、利用向导创建配置中心的spring boot 项目(细节略)
1、因为配置中心也是个spring boot项目
2、选择项目依赖,注意spring boot版本
勾选Spring Cloud Config的Config Server选项
3、POM.xml 关键的依赖其实主要包含两部分:
<properties>
<spring-cloud.version>Hoxton.SR6</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</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>
4、创建配置中心的spring boot引导程序并加上配置服务的注解
@EnableConfigServer
5、在静态目录下创建配置文件
这里用到的是yml格式,properties也可以
server:
port: 8888
spring:
profiles:
active: native
cloud:
config:
server:
native:
search-locations:
- file:///E:/Develop/springcloud/nativeconfig/testconfigserver/
注意因为是windows 环境,所以文件路径是“file:///”开头的,如果是linux,那么是“/”开头,如:/home/user1
这个目录下放的就是各个应用或模块的spring boot程序的各环境下的配置文件(后面会介绍)
6、配置中心到此搭建完成
四、创建应用或模块的spring boot程序
1、配置文件说明
这里的spring boot程序(项目)可能在不同的环境下有不同的配置文件,如开发环境或生产环境,可以带上dev或pat
2、配置文件命名
主要包含两方面组成:
- 第一:有人叫环境,也有人叫类别,官方称作:profile
- 第二:叫标签,官方称作:label,是可选的,可能和代码分支名称有关,如:matser
不细说了,说明如下:
/{application}/{profile}[/{label}]
/{application}-{profile}.yml
/{label}/{application}-{profile}.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties
- application,就是你的应用的spring boot程序名,本例是:spbtvali
- profile,就是上面说的环境,如:dev
- label,就是代码分支的名称,如:master,可选(不选就是空)
本例中命名为:有两个,一个是默认的:spbtvali.yml,另一个是dev环境的:spbtvali-dev.yml
3、配置文件保存路径
还记得否?保存在前述application.yml文件中的:
search-locations:
- file:///E:/Develop/springcloud/nativeconfig/testconfigserver/
两个示例文件内容如下:
- spbtvali.yml
file:
suffix: spring-cloud-default
sittmpuri: www.baidu.com
- spbtvali-dev.yml
sittmpuri: www.sohu.com
4、配置文件项的默认值和覆盖值
前面说过,每个spring boot程序有一个默认的配置文件,如果的spring boot程序启动时指定了某个环境的配置文件,如:dev,那么spring boot程序会从配置中心读取相应,即该环境下映射的配置文件的配置项,如:spbtvali-dev.yml文件里没有file.suffix这个配置项,那么spring boot程序就会从默认配置文件中读取,如:file.suffix的值为:spring-cloud-default;如果两个文件都有相同的配置项,如:sittmpuri,那么spring boot程序读取的配置项的值为:www.baidu.com
5、创建spring boot应用程序
也是根据向导创建,过程略
6、POM.xml关键的依赖其实也主要包含两部分:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
<version>2.2.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-context</artifactId>
<version>2.2.1.RELEASE</version>
</dependency>
7、bootstrap.yml
这个文件很重要,即你的应用的spring boot程序启动时将确定用什么环境的配置文件(此文件启动加载的顺序优先于你spring boot程序的其他配置文件,如:application.yml)
spring:
application:
name: spbtvali
profiles:
active: default
cloud:
config:
uri: http://localhost:8888
注意:active后边的配置,本例中用的是default环境(或叫profile),即你的spring boot程序启动时将加载spbtvali.yml文件配置项,如果你将default改为:dev,那么你的spring boot程序启动时将加载spbtvali-dev.yml文件配置项
8、测试 controller
@RequestMapping("/testit")
@RestController
public class TestController {
@Autowired
public UserInfoService us;
@Value("${sittmpuri}")
public String sitTmpUri;
@GetMapping("insit")
public UserInfo insert(@Validated UserInfo uiUser) {
UserInfo u = us.insert(uiUser);
System.out.println(sitTmpUri);
return u;
}
}
因为目前环境是default,即加载配置中心下的spbtvali.yml文件配置项,故代码:System.out.println(sitTmpUri);的结果是:www.baidu.com
9、Good luck!