spring boot的配置文件application及注入javaBean--初学者
1、简述
SpringBoot使用一个全局的配置文件,配置文件名是固定的;
-
application.properties
-
application.yml
配置文件用于修改Spring Boot自动配置的基础值
- yml,properties与xml对比
YAML:
server:
port: 8081
properties:
server.port=8080
XML:
<server>
<port>8081</port>
</server>
需要标签嵌套,有些赘余
2、yml语法
1、基本语法
- 形式—>key:(空格)value
- 以键值对的形式出现,注意一定要在冒号后加空格
-
以空格的缩进来表示层与层之间的关系
-
只要是左对齐的一列数据,都是同一个层级的
example:
server:
port: 8081
person:
lastName: wlzs
age: 20
birthday: 1999/01/21
maps: {key1: value1,key2: value2}
lists:
- C++
- Java
- python
student:
name: wzbl
age: 21
2、写法
对象(person为对象名,lastName,age,birthday为成员属性):
缩进写法:
person:
lastName: wlzs
age: 20
birthday: 1999/01/21
行内写法:
friends: {lastName: wlzs,age: 20,birthday: 1999/01/21}
数组(lists为数组名,C++,Java,python为组内成员):
缩进写法:(-后加空格)
lists:
- C++
- Java
- python
行内写法
lists: [C++,Java,python]
Map
maps: {key1: value1,key2: value2}
配置文件内不要求为字符串加双引号
“”:双引号:不会转义特殊字符 如换行:\n
“wlzs/nwlzs”
输出:
wlzs/nwlzs
‘’:单引号;会转义特殊字符
“wlzs/nwlzs”
wlzs
wlzs
随机数
${random.value}、${random.int}、${random.long}
${random.int(10)}、${random.int[1024,65536]}
yml支持多文档块方式
server:
port: 8081
spring:
profiles:
active: prod
---
server:
port: 8083
spring:
profiles: dev
---
server:
port: 8084
spring:
profiles: prod
例:不同的设备使用不同的端口
3、配置文件值注入到类
为了方便首先在pom内导入配置文件处理器
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
放入依赖后配置文件会对绑定类的属性进行提示
配置文件:
- yml
person:
lastName: wlzs
age: 20
birthday: 1999/01/21
maps: {key1: value1,key2: value2}
lists:
- C++
- Java
- python
student:
name: wzbl
age: 21
- properties
person.lastName=wlzs
person.age=20
person.birth=1999/01/21
person.maps.key1=value1
person.maps.key2=value2
person.lists=C++,Java,python
person.student.name=wzsl
person.student.age=21
“属性名区分大小写哦”
javaBean(Person的实体类):
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
private String lastName;
private Integer age;
private Date birthday;
private Map<String,Object> maps;
private List<Object> lists;
private Student student;
//get和set方法
//toString方法 方便检验输出
public class Student {
private String name;
private Integer age;
//get和set方法
//toString方法 方便检验输出
-
@ConfigurationProperties: 告诉springboot将本类中的所有属性和配置文件中的值进行绑定
-
只有组件在容器中时,才能提供绑定功能,所以通过@Component将组件放入容器中
通过测试类进行输出
Person{lastName='wlzs', age=20, birthday=Thu Jan 21 00:00:00 CST 1999, maps={key1=value1, key2=value2}, lists=[C++, Java, python], student=Student{name='wzbl', age=21}}