一、SpringBoot的yml配置文件
(1)SpringBoot的配置文件常用的有2种类型,.properties和.yml。
默认情况下,SpringBoot会加载classpath或者classpath:/config下的application.properties
或者a pplication.yml文件。
.properties文件是我们常用的配置文件,.yml则是YAML文件,YAML是一种易阅读、易和脚本语言交互的用来表达资料序列的编程语言,这里简单说下语法
(1)使用空格 Space 缩进分层,同层元素左对齐,不同层元素使用不同的空格数目缩进(不能使用 Tab,各系统 Tab对应的空格数目可能不同,导致层次混乱);
(2)#表示注释;
(3)破折号后面跟一个空格表示列表;
(4)key和value之间用冒号和空格分隔。
environments:
dev:
url: http://dev.bar.com
name: Developer Setup
prod:
url: http://foo.bar.com
name: My Cool App
#yaml 的list集合
my:
servers:
- dev.bar.com
- foo.bar.com
上述代码段是一个标准的yml文件内容,等价于如下properties配置
environments.dev.url=http://dev.bar.com
environments.dev.name=Developer Setup
environments.prod.url=http://foo.bar.com
environments.prod.name=My Cool App
my.servers[0]=dev.bar.com
my.servers[1]=foo.bar.com
SpringBoot通过YamlPropertiesFactoryBean 来加载application.yml文件,并通过YamlMapFactoryBean 将其转换成Map。
我们可以通过@Value或者@ConfigurationProperties注解来获取配置文件中的数据。例如有如下application.yml文件:
name:
nameStr
age:
11
#yaml 的list集合
my:
servers:
- dev.bar.com
- foo.bar.com
@Configuration
public class MyConfiguration {
// 通过@Value获取值
@Value("${name}")
private String name;
@Value("${age}")
private Integer age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
@Configuration
//通过@ConfigurationProperties获取值
@ConfigurationProperties(prefix="my")
public class MyConfig {
private List<String> servers = new ArrayList<String>();
public List<String> getServers() {
return this.servers;
}
}
@SpringBootApplication
@RestController
public class Application {
public static void main(String[] args) {
SpringApplication application = new SpringApplication(Application.class);
application.run(args);
}
@Autowired
private MyConfiguration myConfiguration;
@RequestMapping("/getMyConfiguration")
public String getMyConfiguration() {
return myConfiguration.getName() + ":" + myConfiguration.getAge();
}
@Autowired
private MyConfig myConfig;
@RequestMapping("/getMyConfig")
public List<String> getMyConfig() {
return myConfig.getServers();
}
}
启动Application,在浏览器分别输入 http://localhost:8080/getMyConfiguration 和 http://localhost:8080/getMyConfig 可以得到配置的值。
当使用@ConfigurationProperties获取配置值,SpringBoot还提供了一种宽松的绑定方式(@Value不支持该特性):
@ConfigurationProperties(prefix="person")
public class OwnerProperties {
private String firstName;
public String getFirstName() {
return this.firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
}
则在配置文件中使用如下任意一种方式都能获取对应的配置值
person.firstName
person.first-name
person.first_name
PERSON_FIRST_NAME
来源:CSDN
作者:IT--Fly
链接:https://blog.csdn.net/hukehukehukehuke/article/details/104055665