不会转义字符串里面的特殊字符,特殊字符会作为本身想表达的意思
name: name: "zhangsan \n lisi" 输出:zhangsan 换行 lisi
会转义字符,特殊字符最终会以普通字符输出
name: 'zhangsan \n lisi' 输出:zhangsan \n lisi
friends: name: zhangsan age: 20 或者: friends: {name: zhangsan,age: 20}
用- 来表示每一个元素
pets: - cat - dog - pig 或者: pets: [cat,dog,pig]
告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定
profix: “person”
指定前缀(配置文件中的哪个属性下面的所有属性进行一一映射)
(写在属性上)@Value("${person.name}")
${}从字面量、配置文件中获取值
#{}SpringEL(表达式)
@ConfigurationProperties 和 @Value获取值的比较
@ConfigurationProperties | @Value | |
---|---|---|
功能 | 批量注入配置文件中的值 | 只能一个个注入 |
松散绑定(松散语法) | 支出 | 不支持 |
SpEL(Spring表达式) | 不支持 | 支持 |
JSR303数据校验 | 支持 | 不支持 |
复杂类型封装 | 支持 | 不支持 |
两个注解都能获取到配置文件中的值;
如果说只是在某个业务中需要获取一下配置文件中的某项值,就用@Value
如果编写了一个JavaBean来和配置文件进行映射,就用@ConfigurationProperties
<!--导入配置文件处理器,导入此依赖后在配置文件中给属性绑定值时会有提示--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> </dependency>
把配置文件拆分成多个,花括号中的值可以有多个
@PropertySource(value = {“classpath:person.properties”})
@Configuration//指明当前类是一个配置类 public class MyAppConfig { @Bean// public HelloController helloSerbice(){ return new HelloController(); } }
文档块相当于多个文件
spring profiles active: dev server port: 8080 --- spring profiles: dev server port: 8081 --- spring profiles: test server port: 8082
spring.profiles.active=dev
Java -jar 包名 --spring.profiles.active=dev
-Dspring.profiles.active=dev