前言:在springboot 项目中一般默认的配置文件是application.properties,但是实际项目中我们一般会使用application.yml 文件,下面就介绍一下在springboot 中读取 yml 配置的几种方式.
直接就是 key: value ,如:
- age: 18
- name: mysgk
注:
- 字符串默认不用加上单引号或者双引号;
- "":双引号;不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思
- name: "zhangsan \n lisi":输出;zhangsan 换行 lisi
- '':单引号;会转义特殊字符,特殊字符最终只是一个普通的字符串数据
- name: ‘zhangsan \n lisi’:输出;zhangsan \n lisi
对象还是k: v的方式
k: v:在下一行来写对象的属性和值的关系;注意缩进(不支持tab,使用空格),如:
- person:
- age: 18
- name: mysgk
用- 值表示数组中的一个元素,如:
- hands:
- - left
- - right
如果我们只需要配置文件中的一两个值,@Value 是最简单方便的方式.
- server:
- port: 8081
我们在代码中可以这样取值
- @Value("${server.port}")
- public String port;
注:此处的prot 所在的类需要是一个组件,如果是实体类需要加上@Component
如果需要一个JavaBean 来专门映射配置的话,我们一般会使用@ConfigurationProperties来读取.
- student:
- age: 18
- name: mysgk
javabean:
- @Component
- @ConfigurationProperties(prefix = "student")
- public class Student {
-
- private String name;
-
- 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;
- }
-
- @Override
- public String toString() {
- return "Student{" +
- "name='" + name + '\'' +
- ", age=" + age +
- '}';
- }
- }
使用@ConfigurationProperties,需要配置一个prefix (前缀) 参数, 即写上 key 就可以了.
这种方法好像用的比较少,基本没用过...
- test:
- msg: aaa
代码:
- @Autowired
- private Environment env
-
- @RequestMapping(value = "index2", method = RequestMethod.GET)
- public String index2() {
- System.out.println(env.getProperty("test.msg"));
- return "The Way 2 : "+ env.getProperty("test.msg");
- }
- }