SpringBoot使用一个全局的配置文件,文件名固定,二选一即可:
- application.properties
- application.yml
1. 基本语法
样例:
server:
port: 8080
- k: v:表示一对键值对(冒号后的空格必须有)。
- 且以空格的缩进控制层级关系,只要是左对齐的一列数据,都属于同一层级。
- 大小写敏感。
- 字符串不用加上单引号或双引号。
- 对象、map:
friends:
lastName: zhangsan
age: 20
或者friends: {lastName: zhangsan,age: 18}
- 数组:
pets:
- cat
- dog
- pig
或者pets: [cat,dog,pig]
2. 属性绑定
yml文件内容:
person:
name: zhangsan
age: 20
list:
- name: xiaobai
age: 2
- name: xiaohua
age: 3
待绑定java对象:
核心@ConfigurationProperties(prefix = "person")
,代表从yml文件中的person字段中拿数据。
//添加到容器中,以便@Autowired直接从容器中拿person对象
@Component
//从yml文件中绑定属性
@ConfigurationProperties(prefix = "person")
public class Person {
private String name;
private Integer age;
private List<HashMap> list;
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age='" + age + '\'' +
", list=" + list +
'}';
}
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;
}
public List<HashMap> getList() {
return list;
}
public void setList(List<HashMap> list) {
this.list = list;
}
}
person对象打印结果为:
Person{name='zhangsan', age='22', list=[{age=13, name=xiaobai}, {age=11, name=xiaolizi}]}
3. 配置文件处理器
编写配置文件时会有提示。pom文件导入插件:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
4. @value
@value可以单独的为某个属性绑定配置文件得值,而@ConfigurationProperties为批量式绑定。
@Controller
public class HelloController {
//属性绑定
@Value("${person.name}")
String personName;
//SpEL
@Value("#{23-3}")
String age;
@Autowired
Person person;
@ResponseBody
@RequestMapping("/hello")
public String hello(){
System.out.println(person);
return personName+age;
}
}
此处将会返回:张三20
网友评论