SpringBoot 配置文件

哈喽呀,你好呀,欢迎呀,快来看一下这篇宝藏博客吧~~~

 


1. 配置文件的作用

对于Spring Boot项目而言,所有重要的数据都是在配置文件中配置的,比如:

  • 项目的启动端口;
  • 数据库的连接信息(包含用户名和密码的设置);
  • 用于发现和定位问题的普通日志和异常日志等;
  • 第三方系统的调用秘钥等.

如果没有配置文件,那么SpringBoot项目就不能连接和操作数据库,也不能保存可以用于排查问题的关键日志,可见其配置文件的重要性.

那配置文件到底究竟是什么样的呢,哦们一起来看.

2.配置文件的格式

Spring Boot 配置文件主要分为以下两种:

  • .properties
  • .yml

对应到项目的目录里面就是;

要注意的是,application.properties是项目中自带默认的(下面那个application.yml是我自己建的), 并且他的优先级是最高的,比如你在这两个文件中都对端口号做了不一样的设置,则该项目会优先选择在application.properties中的配置的端口号.也就是说,.properties 配置⽂件的优先级最⾼,但加载完 .properties ⽂件之后,也会加载 .yml ⽂件的配置信息

虽然理论上来讲,.properties和.yml可以共存,但在实际的业务中,通常会采取一种统一的配置文件格式,这样可以降低故障率.图中application.properties这个配置文件是IDEA帮忙生成的,那在实际的开发中我们如果需要自己创建配置文件又该怎样创建呢?

我们都说SpringBoot一大特点就是约定大于配置.所以我们要按照它的规定来,当我们想要去创建配置文件时,应遵循以下命名规则:

application-xxx.properties 或 application-xxx.yml

说明:前面的"application-"是必须要这样写的,"xxx"可以任意写,但最好符合规范,最后是写.properties还是.yml取决于你或项目团队想要选用哪种格式的配置文件.你只有按照它的这个规则来才能被Spring扫描到.比如下图就是一个合格的自定义的配置文件:

那有人就要问了,为什么要创建这么多配置文件呢,维护起来不是更麻烦吗?要知道,一个项目工程的完成往往需要多个配置文件.因为往往在一个项目中,它的开发平台是有多个的,如果只用一个配置文件的话,在不同的平台时,我们就需要改成当前平台所适应的,每次都改来改去会很麻烦,而且还会增加出错率,比如,在不同的平台上,端口号,连接的数据库等都可能不同,如果不建立多个而是采用在一个配置文件中进行修改的话,那头真是太铁了~。所以我们就采用多平台的配置文件设置.这样在不同的平台,我们就可以指定选择不同的配置文件,就不需要改来改去了,一般最少会有以下三个:

  • 开发环境的配置文件  
  • 生产环境的配置文件
  • 测试环境的配置文件

那创建了这么多配置文件,Spring怎么知道我要用哪个配置文件呢,这是就需要我们在主配置文件application.yml中告诉Spring我们要用哪一个了.比如我现在要用生产环境的配置文件,则只需要在主配置文件 application.yml 中写:

2.1 properties 配置文件的基本语法

properties 配置文件时最早期的配置文件格式,也是创建Spring Boot项目默认的配置文件.

.properties 配置文件是以键值的形式配置的,key和value之间是以"="连接的,如:

 PS:配置文件中使用"#"来添加注释信息.

properties缺点分析:

从上述配置可以看出, .properties配置文件中会有很多冗余的信息,比如:

 前面都是一样的,但是却要写三次,这显然不太友好.而.yml 类型的配置文件就可以解决这个问题:

2.3 yml 配置文件的基本语法

yml是树形结构的配置文件,它的基础语法是"key: value",注意key和value之间要使用英文冒号加空格,注意,空格千万不能省略.如:

还有一种配置方式,当我们要配置的信息有多级时,需采用以下格式:

我们再来回顾一下properties是如何配置的:

 从中我们可以发现,用yml就可以省略相同的前缀.这也是yml的优点之一:写法简单简洁.

yml配置文件 优点:

yml 是一个可读性高,写法简单,易于理解,它的语法和JSON类似。

yml 支持更多的数据类型,它可以简单表达数组,散列表,标量等数据。它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种配置文件等。

yml 支持更多的编程语言,它不止在Java中可以使用,还可以在Golang、PHP、Python、Ruby、JavaScript、Perl中。

yml还可以配置不同的数据类型和null:

那配置好以上这些之后我们怎么用呢,接下来我们来看yml配置的读取吧~

2.4 读取配置文件信息

在项目中,如果需要主动读取配置文件中的某些内容,可以使用 @Value 注解来实现.

@Value 注解使用"${配置文件的键}"的格式读取,比如我现在要读取上述yml配置文件中string.value的值,代码如下(TestController):

 运行结果:

很显然,我们成功的读取到了指定的yml配置文件中的信息.

要记住,读取配置文件时,不管配置文件是.properties型还是.yml型的,都是按照以上这种方法来读取的,即:

@Value("${要读取的配置信息的键}")

当传入一个没有被配置过键值对时,程序会报错.

2.5 配置对象

我们还可以在yml中配置对象,如下:

 或者使用行内写法,(与上面的写法作用一致):

如果要读取这个对象的信息,就要用另外一个注解@ConfigurationProperties来读取了.具体实现如下:

 调用类的实现如下:

运行结果如下: 

 显然,我们成功的用 @ConfigurationProperties 注解读取到了student对象。

好啦,今天就到这啦,回顾一下,你还记得配置文件的作用吗,还记得如何在配置文件中配置我们需要的信息以及如何读取吗~~~

咱们下期见吧~拜拜~~~

 

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哆啦A梦的110

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值