SpringBoot配置文件详解

- 日理万妓 2023-07-10 12:54 68阅读 0赞

点此查看全部文字教程、视频教程、源代码

本文目录

    1. 可以不用配置文件吗
    1. 配置文件格式
    1. 自定义配置项
    1. 指定对象绑定配置
    1. 在配置文件中使用随机数
    1. 自定义配置文件
    1. 引用配置项
    1. 总结

1. 可以不用配置文件吗

完全可以不用配置文件,直接启动就行,参数都是默认的。

就算用配置文件,这个配置文件跟Spring中那种繁琐的配置文件也完全不是一个概念。

SpringBoot的配置文件非常简单!今天就来聊聊。

2. 配置文件格式

SpringBoot支持两种配置文件.properties配置文件和.yml配置文件,虽然官方号称是推荐.yml配置文件,但是我实际看到的还是以.properties配置文件居多点。

这两种格式其实没有本质区别.properties文件使用.分割语义,而.yml文件使用缩进分割意义(有点像Python哈哈)。

所以我们只要掌握了一种配置,就可以翻译为另一种配置。例如配置项目启动端口。

  1. # .properties文件配置方法
  2. server.port=1007 #启动端口设置为1007
  3. # .yml配置方法
  4. server:
  5. port: 1007 #务必注意冒号后面要有个空格 不然不生效哈

注意,SpringBoot项目启动时加载的配置文件名默认为application.propertiesapplication.yml,不建议老铁你同时建立这两个文件,纯属闲的没事找事。

TIPS SpringBoot2.x中可以使用server.servlet.context-path=/xxx配置项目的访问路径,而SpringBoot1.x中配置方法为server.context-path=/xxx,不知道为啥搞得不一样了,不向前兼容是很烦的一件事!

3. 自定义配置项

可以自定义一些配置项,然后在项目中直接使用,例如我们通常会习惯将微信公众号相关的参数放到配置文件中便于修改,而不是写死到代码中,每次修改还得重新编译程序。

  1. # 配置端口
  2. server.port=1007
  3. # 公众号的appid
  4. wxmp.appid=111
  5. # 公众号的secret
  6. wxmp.secret=222

然后注入到组件中,这样容器在启动时就可以将配置内容注入组件。

  1. /**
  2. * 微信公众号参数
  3. */
  4. @Component//注册为组件
  5. public class WxMpParam {
  6. @Value("${wxmp.appid}")//注入wxmp.appid配置项
  7. private String appid;
  8. @Value("${wxmp.secret}")//注入wxmp.secret配置项
  9. private String secret;
  10. }

4. 指定对象绑定配置

如下同样生效,注意@Data不能省略

  1. /**
  2. * 微信公众号参数
  3. */
  4. @Component//注册为组件
  5. @EnableConfigurationProperties//启用配置绑定组件功能
  6. @ConfigurationProperties(prefix="wxmp")//指定组件绑定的前缀
  7. @Data//需要开启get/set,以便注入
  8. public class WxMpParam {
  9. private String appid;//自动匹配到wxmp.appid
  10. private String secret;//自动匹配到wxmp.secret
  11. }

5. 在配置文件中使用随机数

配置文件中使用随机数也是比较常见的场景,尤其启动多个客户端时,希望指定一个启动端口的范围,例如10-20,可配置如下:

  1. # 配置端口为1-20间的随机数
  2. server.port=${random.int[10,20]}

这样我可以连续启动四个客户端,启动端口分别为:12、13、17、19,可见是随机的,而且在我指定的范围内波动。

6. 自定义配置文件

有时候参数太多,都放到一个配置文件中太乱了,我们会希望将配置分到不同文件中,然后每个文件保存不同配置。

例如上面微信公众号配置,我们单独摘出来,放到wxmp.properties中。

  1. # wxmp.properties
  2. # 公众号的appid
  3. wxmp.appid=111
  4. # 公众号的secret
  5. wxmp.secret=222

让我们在组件注入时代码如下:

  1. /**
  2. * 微信公众号参数
  3. */
  4. @Component // 注册为组件
  5. @PropertySource(value = "classpath:wxmp.properties", encoding = "utf-8") // 指定配置文件及编码
  6. public class WxMpParam {
  7. @Value("${wxmp.appid}")
  8. private String appid;
  9. @Value("${wxmp.secret}")
  10. private String secret;
  11. }

当然我们也可以结合绑定对象的语法,修改如下:

  1. /**
  2. * 微信公众号参数
  3. */
  4. @Component//注册为组件
  5. @EnableConfigurationProperties//启用配置绑定组件功能
  6. @ConfigurationProperties(prefix="wxmp")//指定组件绑定的前缀
  7. @PropertySource(value = "classpath:wxmp.properties", encoding = "utf-8") // 指定配置文件及编码
  8. @Data//需要开启get/set,以便注入
  9. public class WxMpParam {
  10. private String appid;//自动匹配到wxmp.appid
  11. private String secret;//自动匹配到wxmp.secret
  12. }

7. 引用配置项

Spring Boot配置项是可以引用其他配置项的值的,这个稍微提一下,例如:

  1. # wxmp.properties
  2. # 公众号的appid
  3. wxmp.appid=111
  4. # 公众号的secret,值为111222
  5. wxmp.secret=${wxmp.appid}222

8. 总结

配置少,就直接在application.properties写写就完了。

配置多,就分出几个配置文件来。

如果一个配置文件中配置项很多,也可以考虑让配置绑定对象,免得重复写前缀。

SpringBoot提供了足够灵活的配置文件使用机制,让我们灵活运用!

发表评论

表情:
评论列表 (有 0 条评论,68人围观)

还没有评论,来说两句吧...

相关阅读

    相关 SpringBoot 配置文件详解

      springboot采纳了建立生产就绪spring应用程序的观点。 Spring Boot优先于配置的惯例,旨在让您尽快启动和运行。在一般情况下,我们不需要做太多的配置就能