二、SpringBoot配置文件常见用法详解

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_38323872/article/details/98484226

概述

前面文章中初步讲解了如何构建一个简单的SpringBoot项目并运行访问,本文中会初步讲解有关于SpringBoot的配置文件,在以后的文章当中还会深入讲解,SpringBoot是如何进行自动化配置,通过源码了解它神奇在哪儿。

SpringBoot为了使我们的项目能够以相同的代码在不同的环境中运行,允许我们自定义配置。可以使用properties文件YAML文件、环境变量或者命令行参数来自定义配置。属性值可以通过@Value注解直接注入到bean中,通过Spring的Environment抽象方法直接访问。也可以通过@ConfigurationProperties注解直接绑定到结构化对象的属性上。(----翻译自SpringBoot官网

一般的情况下(仅限写demo的情况…),SpringBoot目的是让我们写最少的配置文件,运行最完美的项目。不过我们在企业中开发可不是写demo,很多参数还是需要自定义配置的。另外,SpringBoot官网推荐我们使用YAML配置文件做自定义配置,该类型配置层级分明,语法简单,可自行搜索学习。

配置文件加载顺序

1. 不同文件格式,yaml对比properties
相同路径不同文件格式
由此动图可看出启动端口为8082,故而properties的优先级高于yml配置。

2. 相同文件格式,不同配置文件路径
路径分别为:

  • classpath:/config/
  • classpath:/
    相同文件格式不同路径
    由动图可以看出,启动端口为config/目录下的8083,因此,config/目录的优先级更高。

:SpringBoot在优先级更高的位置找到了配置,那么它就会无视优先级低的配置,还有另外两种情况,大家可以自行测试。也可以参考官方文档第24.3节会有更原生的介绍。

自定义配置文件

首先说为什么会有自定义配置文件的存在,因为我们在项目开发过程当中,难免会对接很多第三方得接口,三方的默认秘钥等等,如果把这些都揉进一个配置文件中,会非常的冗杂,不够简洁明了。因此,我们可以自定义多个配置文件,并以见名知意的方式来命名,这样就极大的降低了管理的难度。

  1. 在resources/config下创建配置文件,内容如下:
#注:我当前配置文件命名为myconfig.properties,命名无硬性要求,且配置文件路径也可以为resources的根目录下
#自定义配置文件
user.myname=罗拉快跑跑跑跑
user.age=25
user.address=北京市海淀区

使用方法很简单,哪里需要引哪里,基于注解

@PropertySource(value = {"classpath:config/myconfig.properties"}, encoding = "UTF-8")
  • value:指定当前配置文件的路径
  • encoding:指定读取当前配置文件的编码格式。

:本猿在使用过程当中缺省encoding配置会出现乱码的问题,在后续的文章当中会详细介绍在SpringBoot项目当中常见的乱码问题该如何解决。如果有大神知道为啥该配置不使用默认配置会乱码,还请不吝赐教,感谢!
代码演示如下:
自定义配置文件
2. 把配置文件的属性值赋给实体类,这种方式本猿很少使用到,个人觉得使用场景不是很丰富,而且网上大佬们写的很详细,就不再赘述,这里推荐一篇,仅供参考

多环境配置文件

在现实开发过程中,我们的配置文件会分为好几个版本,以本猿目前所在的公司为例,有开发环境、测试环境、预生产环境和生产环境。彼此都是独立的环境,这时候我们的Redis、MongoDB、MySQL等等都需要不同的地址,因此引入多环境配置文件就显得尤为重要。

1. 增加多个配置文件

新增配置文件,可以以application-xxx.properties/yml的形式来命名,建议xxx可以指明是具体环境,达到见名知意的效果。具体配置项的语法可以自行百度哦亲,或者点击这里

2. 激活指定环境配置

在SpringBoot中默认加载命名为application.properties/yml文件作为默认配置。同时为了支持多环境配置文件,SpringBoot提供了spring.profiles.active=xxx;属性来控制当前主配置文件具体激活哪个环境的配置。在我接下来的例子当中,演示了三个环境,分别命名为:application-test.yml(8082)、application-develop.yml(8080)、application-product(8081).yml。对应的我在主配置文件(也就是application.yml)中激活的是test配置文件,故而项目会在8082端口启动。

动图演示:

多环境配置文件

总结

  • 参考文献:
    https://spring.io/guides/gs/spring-boot/
    https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/
  • 源码地址:https://github.com/zheng-weiwei/public/tree/master/config

感谢,请多多指教!

猜你喜欢

转载自blog.csdn.net/weixin_38323872/article/details/98484226