SpringBoot学习2之配置文件
微信公众号" IT程序猿进化史", 共同学习进化~
虽然SpringBoot号称零配置,但是在实际开发过程中,我们常常需要进行一些额外信息的配置,比如数据库连接的一些参数,或者分布式服务的相关配置等等,那么这个时候就有可能用到我们本章的内容。
SpringBoot 添加自定义属性
当我们在创建一个springboot项目时,可以在其src/main/java/resources目录下创建一个名为application.properties的文件或者application.yml文件作为配置文件,springboot会默认对该名称的文件进行读取。
在application.yml中添加如下属性
1
2
3
|
test:
id: 1
name: bob
|
注意,不要使用tab,制表符等进行缩进,请使用空格
如果想要在程序中读取以上属性,可以使用@Value(“${属性名}”)注解
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
public
classApp {
"${test.id}")
(
private String id;
"/")
(
public Stringhello(Model model){
model.addAttribute(
"id", id);
return
"hello";
}
publicstatic void main(String[] args){
SpringApplication.run(App.class, args);
}
}
|
将属性赋值给实体类
当属性非常多的时候,如果每一个都使用@Value注解,则过于麻烦,这个时候,我们可以根据这些属性,给他们创造一个统一的实体类,比如
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
"test")
(prefix =
public
classConfigBean {
private String name;
private
int id;
public StringgetName(){
return name;
}
publicvoid setName(String name){
this.name = name;
}
publicint getId() {
return id;
}
publicvoid setId(int id){
this.id = id;
}
}
|
同时需要在application类添加@EnableConfigurationProperties
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
public
classApp {
ConfigBean configBean;
"/")
(
public Stringhello(Model model){
model.addAttribute(
"id", configBean.getId());
return
"hello";
}
publicstatic void main(String[] args){
SpringApplication.run(App.class, args);
}
}
|
启动工程,信息读取成功
@EnableConfigurationProperties注解中可以存放多个类,用,分割,比如
1
|
|
同时,如果你的配置信息不想放到application.yml这个默认的文件中,你也可以将其放到自己的配置文件中,比如该自定义配置文件叫做”myapplication.yml”,然后在配置实体类上额外添加注解即可。
1
|
"classpath: myapplication.yml")
(value =
|
多环境配置文件
在实际开发过程中,为了保证线上程序的正确性,常常使用多套配置,比如开发一套配置,测试一套配置,实际生产一套配置,而我们需要在这些多个配置之间来回切换。
我们可以通过在代码中更改@PropertySource 中的内容来进行切换,但是这样过于麻烦
其实我们可以采用如下手段:
首先,给各个开发环境进行命名
- application-test.yml:测试环境
- application-dev.yml:开发环境
- application-prod.yml:生产环境
然后只需要在application.yml中配置
1
2
3
|
spring:
profiles:
active: dev
|
当需要切换的时候直接将active这一属性进行切换即可(test/dev/prod)
比如我们在test 中
1
2
|
server:
port: 8081
|
在dev中
1
2
|
server:
port: 8082
|
然后现在运行就会发现,浏览器访问地址变为了http://localhost:8082/
说明:只要格式按照application-{环境标识}.yml或者application-{环境标识}.properties即可,不一定必须是dev/test/prod/,以上命名只是为了方便区分。
详情请访问我的博客:点击打开链接