配置文件作用
解决硬编码的问题。把可能发生改变的数据集中放置在一个文件,当程序启动直接从配置文件中读取信息加载,而不是在代码中将数据写死。比如字体大小,如果采用硬编码,直接在程序中指定字体大小,那所有用户打开这个程序的页面字体都是一样大。但把字体大小放在配置文件中,就可以以用户设置的字体大小来显示。
很多项目或者框架的配置信息都放在配置文件中,比如:
项目启动端口号,数据库连接信息,第三方系统的调用密钥等信息,普通日志和异常日志的配置。
springboot中的两种配置文件
application.properties 和 application.yml/application.yaml,
application.yml 是application.yaml 的简写。
两种文件配置项的格式不同,开发中选择一个就行,当两者同时存在,配置发生冲突时,以application.properties配置项为准。
application.properties
properties是最早期使用的一种配置文件格式,也是SpringBoot项目默认使用的配置文件。
要想使用yml文件,将项目中的文件后缀properties改成yml就行.(改名实现切换)

格式
文件数据是键值对的格式,=分隔key和value,键值对之间换行符分隔
#配置项⽬端⼝号
server.port=8080
#配置数据库连接信息
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8&
spring.datasource.username=root
spring.datasource.password=roo
配置文件注释 用 #。
缺点

配置信息有很多重复的地方,不够简洁。
application.yml
格式
每个配置项的第一行靠最左边写,低层比高层多两个缩进,同级之间左边对齐,用空格表示层级。键值对的格式:key冒号空格value。如果value为空,可以用加‘ ’,用空字符表示。

注意事项
@RestController
public class ReadYml {
@Value("${string.str1}")
private String str1;
@Value("${string.str2}")
private String str2;
@Value("${string.str3}")
private String str3;
@RequestMapping("/yml")
public String readYml(){
System.out.println(str1);
System.out.println(str2);
System.out.println(str3);
return "yml";
}
缺点
对格式有更高要求,对空格很敏感,一个空格不对就会编译报错。
不适用太复杂的配置,很容易配置出错,可读性差。
优点
具体配置项
不用记,从官网复制过来就行了,自定义参数就行。

获取配置信息
两种文件用一种方法获取配置文件中的信息,用@Value注释。
@Value("${key}") //根据key获取对应value;key为properties中的格式;
yml转换成properties格式


粘贴过来就是

@PostConstruct 注释: 初始化方法,跟@Value注释一起使用,在程序启动时就能获取配置信息。
配置对象
student:
id: 1
name: Java
age: 18
student: {id: 1,name: Java,age: 18} //也可以用这个格式 每个键和值之间都是一个空格。
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@ConfigurationProperties(prefix = "student")
@Component
@Data
public class Student {
private int id;
private String name;
private int age;
}
@RestController
public class StudentController {
@Autowired
private Student student;
@RequestMapping("/readStudent")
public String readStudent(){
return student.toString();
}
}
#配置集合
dbtypes:
name:
- mysql
- sqlserver
- db2
#配置map
maptypes:
map:
k1: kk1
k2: kk2
k3: kk3
@Component
@ConfigurationProperties("dbtypes")
@Data
public class ListConfig {
private List<String> name;
}
1468

被折叠的 条评论
为什么被折叠?



