概述
配置文件的作用
为了解决硬编码的问题,把所有可能做出改变的内容集中在一起,例如:字体大小
配置文件的分类
application.properties
概述:
语法:以key=value的形式
java
spring.application.name=springmvc-demo
#端口号
#server.port=9091
my.key =kon
注:1.当properties和yml配置文件内容一致同时生效,但properties的优先级更高,一般使用一个配置文件,会取并集
2.如果不修改字符编码可能会在重新打开配置文件时,注释就会有乱码产生,所以我们需要去修改

读取properties配置文件
java
@RestController
@RequestMapping("/prop")
public class ReadPropertiesController {
// 这个注解把配置文件的my.key赋值给了myKey
@Value("${my.key}")
private String myKey;
@Value("${server.port}")
private Integer serverPort;
@RequestMapping("/read")
public String read(){
return "myKey:"+myKey;
}
//这个注释表示ReadpropertiesController这个项目启动之前就执行这个方法
@PostConstruct
public void read2(){
System.out.println("serverPort:"+serverPort);
}
}
application.yml
概述:
语法:以key: value的形式,冒号与value的空格是不可省略的
java
server:
port: 8080
netty:
validate-headers: true
yml配置不同数据类型以及null
java
# 表示为空字符
kon:
value: ""
# 代表为null
lin:
zhou: ~
# 表示浮点数
fen:
chen: 3.15936
读取yml配置文件
实际上和properties一样,只是需要复制配置文件时,需要选择右键Copy
统一配置和读取
当我们读取配置文件的内容时,还是需要去一个一个进行读取,感觉比较麻烦,那么我们想要整体进行读取,就需要去配置对象,集合以及Map
配置和读取对象
java
@Data
@Component
//注解表示的是创建这个对象,并且会去寻找这个路径下面的内容,给类里的属性进行赋值
@ConfigurationProperties(prefix = "spring.datasource")
public class DateSourceProperties {
private String url;
private String username;
private String password;
}
java
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8&useSSL=false
username: root
password: root
java
@Autowired
private DateSourceProperties dateSourceProperties;

配置和读取集合和Map
java
@Data
@Component
@ConfigurationProperties(prefix = "zhao")
public class DataTypes {
private List<String> qan;
private Map<String,String> map;
}
java
zhao:
qan:
-name
-gender
-age
map:
k1: 56
k2: 98
k3: 66

yml文件加单双引号的区别
java
chu:
value1: hello \n Spring Boot
value2: 'hello \n Spring Boot'
value3: "hello \n Spring Boot"
java
chuValue1:hello \n Spring Boot
chuValue2:hello \n Spring Boot
chuValue3:hello
Spring Boot
结论为:单引号不会转义,双引号会转义
application.yaml
和yml一样