SpringBoot 配置文件加载 5 大结论

本贴最后更新于 1906 天前,其中的信息可能已经时移世改

结论 1

@Value + @Profile 注解

@Value + @Profile 注解可以动态读取 SpringBoot 的 application 配置文件属性值,不能读取自定义配置文件属性值。如果找不到启动时就会报错。

结论 2

@Value + @Profile + @PropertySource 注解

@Value + @Profile + @PropertySource 注解可以读取 @PropertySource 注解指定的配置文件属性值,并且可以读取结论 1 中读取到的属性值,如果找不到就返回 null 值。

结论 3

@PropertySource + @ConfigurationProperties 注解

@PropertySource + @ConfigurationProperties 注解可以读取 @PropertySource 注解指定的配置文件属性值,并且结合 @ConfigurationProperties 注解中定义的属性值前缀将值直接赋值给配置类的对应属性。

注意:@ConfigurationProperties 注解前缀 + 配置类的属性名 = @PropertySource 注解获取到的属性名,并且大小写敏感,找不到匹配属性就返回 null 值。

结论 4

@Value + @PropertySource + @ConfigurationProperties 注解

如果根据结论 2 能找到值,直接将值赋值给配置类的对应属性,否则,根据 @ConfigurationProperties 获取配置文件的属性值,找到就返回,如果找不到就返回 null 值。

结论 5

  1. 结论 1 和结论 2 中的 @Profile 注解可以不指定,如果不指定,则只能读取 SpringBoot 默认配置文件 application.properties 或 application.yml 中的属性值。
  2. 配置文件的加载顺序为先加载 SpringBoot 结合 @Profile 定义的配置文件,再读取自定义的配置文件,如果多配置文件定义了同一个属性,则 SpringBoot 会使用第一个读取到的值,后面加载的值不会覆盖前面的值。
  3. 如果 application.properties 和 application.yml 在同一目录下存在,则会读取 application.properties 文件。

    大家觉得是否有用

    单选 公开 永不结束 1 票
    有用
    100% 1 票
    一般
    0% 0 票
    无用
    0% 0 票

    PS: 以上为个人理解,如有不正确的地方还请在评论下方指出,我及时更改。
  • Spring

    Spring 是一个开源框架,是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 JavaEE 应用程序开发提供集成的框架。

    940 引用 • 1458 回帖 • 158 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
Ethan
从前现在过去不在回来,红红落叶望眼尘世外! 苏州