SpringBoot配置文件

配置文件作用

解决硬编码的问题。把可能发生改变的数据集中放置在一个文件,当程序启动直接从配置文件中读取信息加载,而不是在代码中将数据写死。比如字体大小,如果采用硬编码,直接在程序中指定字体大小,那所有用户打开这个程序的页面字体都是一样大。但把字体大小放在配置文件中,就可以以用户设置的字体大小来显示。

很多项目或者框架的配置信息都放在配置文件中,比如:

项目启动端口号,数据库连接信息,第三方系统的调用密钥等信息,普通日志和异常日志的配置。

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为空,可以用加‘ ’,用空字符表示。

注意事项
默认value值为字符串,不用再加单引号或者双引号。如果加上双引号,里面的转义字符可以转义。
string:
  str1:  Hello \n Spring Boot.
  str2:  'Hello \n Spring Boot.'
  str3: "Hello \n Spring Boot."
读取程序实现代码如下:
@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";
}

以上程序的执⾏结果如下图所⽰
字符串默认不用加上单引号或者双引号。
单引号会转义特殊字符,使其失去特殊功能, 始终是⼀个普通的字符串.
双引号不会转义特殊字符, 特殊字符会表示本身的含义
缺点

对格式有更高要求,对空格很敏感,一个空格不对就会编译报错。

不适用太复杂的配置,很容易配置出错,可读性差。

优点
支持更多的数据类型, 可以简单表达对象, 数组, List,Map等数据形态

具体配置项

不用记,从官网复制过来就行了,自定义参数就行。

SpringBoot官网

获取配置信息

两种文件用一种方法获取配置文件中的信息,用@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}  //也可以用这个格式  每个键和值之间都是一个空格。
这个时候就不能用@Value 来读取配置中的对象了,
@ConfigurationProperties 来读取,具体实现如下:
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();
 }
}
配置 list 集合和map:
#配置集合
dbtypes:
 name:
 - mysql
 - sqlserver
 - db2

#配置map
maptypes:
 map:
 k1: kk1
 k2: kk2
 k3: kk3
集合的读取和对象⼀样,也是使用 @ConfigurationProperties 来读取的
@Component
@ConfigurationProperties("dbtypes")
@Data
public class ListConfig {
 private List<String> name;
}

总结

1.properties 是以 key=value 的形式配置的键值类型的配置⽂件, yml 使用的是树形配置⽅式;
2.yml 层级之间使用换行缩进的方式配置, key 和 value 之间使用": "(英⽂冒号)加空格的方式设置, 并且空格不可省略;
3.properties 为早期并且默认的配置文件格式, 其配置存在⼀定的冗余数据, 使用 yml 可以很好的解决数据冗余的问题, 但不适合复杂配置(可读性差);
4.   yml 可以和 properties 共存,但⼀个项目中建议使用⼀种配置类型文件,如果同时存在properties的优先级更高;
5.读取配置文件内容, 使用 @Value 注解, 注解内使用" ${} "的格式读取,对象用@ConfigurationProperties注解。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值