yaml
1 格式
要了解Spring Boot,我们先来编写第一个Spring Boot应用程序,看看与前面我们编写的Spring应用程序有何异同。
我们新建一个springboot-hello
的工程,创建标准的Maven目录结构如下:
springboot-hello
├── pom.xml
├── src
│ └── main
│ ├── java
│ └── resources
│ ├── application.yml
│ ├── logback-spring.xml
│ ├── static
│ └── templates
└── target
其中,在src/main/resources
目录下,注意到几个文件:
K: V 对空格的要求很高
#k= v name: qiangjiang #对象 student: name: qiam age: 3 # 行内写法 student: {name: qiang,age: 3} #数组 pets: [cat,dog,pig]
application.yml
这是Spring Boot默认的配置文件,它采用YAML格式而不是.properties
格式,文件名必须是application.yml
而不是其他名称。
YAML格式比key=value
格式的.properties
文件更易读。比较一下两者的写法:
使用.properties
格式:
2 yaml可以给实体类赋值
yaml赋值
@configurationProperties作用: @ConfigationProperties作用:
将配置文件中配置的每一个属性的值,映射到这个组件中; 将配置文件中配置的每一个属性的值,映射到这个组件中;
告诉springBoot将本类中的所有属性和配置文件中相关的配置进行绑定 告诉Spring Boot将本类中的所有属性和配置文件中相关的配置进行绑定
参数 prefix = "person":将配置文件中的person下面的所有属性—─对应 参数前缀=“Person”:将配置文件中的Person下面的所有属性-─对应
yaml赋值
person:
name: hshs
age: 3
Test
@Autowired
private Person person;
@Test
void contextLoads() {
System.out.println(person);
}
person类
@Component//bean注入 @ConfigurationProperties(prefix = "person")//将这个文件和uaml配置文件链接起来 public class Person {
3 properties可以给实体类赋值
properties
name=qing
实体类
@Component @PropertySource(value="classpath:appliaction.properties") public class Dog { @Value("${name}") private String name;
使用.properties
格式:
# application.properties
spring.application.name=${APP_NAME:unnamed}
spring.datasource.url=jdbc:hsqldb:file:testdb
spring.datasource.username=sa
spring.datasource.password=
spring.datasource.driver-class-name=org.hsqldb.jdbc.JDBCDriver
spring.datasource.hikari.auto-commit=false
spring.datasource.hikari.connection-timeout=3000
spring.datasource.hikari.validation-timeout=3000
spring.datasource.hikari.max-lifetime=60000
spring.datasource.hikari.maximum-pool-size=20
spring.datasource.hikari.minimum-idle=1
使用YAML格式:
# application.yml
spring:
application:
name: ${APP_NAME:unnamed}
datasource:
url: jdbc:hsqldb:file:testdb
username: sa
password:
driver-class-name: org.hsqldb.jdbc.JDBCDriver
hikari:
auto-commit: false
connection-timeout: 3000
validation-timeout: 3000
max-lifetime: 60000
maximum-pool-size: 20
minimum-idle: 1