springboot 配置

application.properties配置中文乱码问题

删除现有的文件,设置idea。setting->editor->file encodings 将Global Encoding Project Encoding Default encoding for properties files都设置成utf-8.并且勾选Transparent native-to-ascii conversion

多配置时spring.profiles.active=dev不生效

如果只有application.propertiesapplication-dev.properties这两个文件,是不行的,需要在增加一个文件比如application-prod.properties
只有配置文件多余2个才会生效

配置使用

application-dev.properties内容如下

1
2
3
com.dudu.name="张三"
com.dudu.want="跑步"
com.dudu.sex="男"

直接使用配置

在需要用到的地方使用,在属性上使用@Value注解就可以

1
2
@Value("${com.dudu.name}")
private String name;

使用bean对象方式

config/ConfigBean.java 代码如下,值得注意的是@Configuration注解非常重要,如果没有这个注解是不生效的。
其实还有@EnableConfigurationProperties注解方式,但使用起来不如@configuration方便。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package com.springboot.config.config;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;


/**
* @author shooke
*/
@Configuration
@ConfigurationProperties(prefix="com.dudu")
public class ConfigBean {
private String name;
private String sex;
private String want;

public String getWant() { return want;}

public void setWant(String want) { this.want = want;}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getSex() {
return sex;
}

public void setSex(String sex) {
this.sex = sex;
}
}

在需要用到配置的地方,直接初始化一个ConfigBean的对象就可以了

1
2
3
4
5
6
7
@Autowired
ConfigBean conf;

@RequestMapping("/dev")
public String dev(){
return conf.getName();
}

使用自定义properties

有时候配置项太多了,咱们就拆分成不同的文件。拆分的文件使用需要用到@PropertySource注解,指定一下配置文件路径

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
/**
* @author shooke
*/
@Configuration
@ConfigurationProperties(prefix = "com.md")
@PropertySource("classpath:test.properties")
public class ConfigTestBean {
private String name;
private String want;
// 省略getter和setter

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getWant() {
return want;
}

public void setWant(String want) {
this.want = want;
}
}

代码

https://gitee.com/shooke/springboot/tree/master/springboot-config

参考资料

http://tengj.top/2017/02/28/springboot2/