SpringBoot文档之Externalized Configuration的阅读笔记

打印 上一主题 下一主题

主题 878|帖子 878|积分 2634


  • Reference
  • Core Features
  • Externalized Configuration
    SpringBoot应用可以从properties文件、yaml文件、环境变量、命令行参数中得到配置参数。
    代码里可以使用注解@Value读取配置项的值。
    配置项参数的加载顺序,后加载的属性,可以覆盖已加载的同名属性的值。

    • 默认配置,通过SpringApplication.setDefaultProperties指定参数值。
    • 使用@PropertySource指定参数值的来源。
    • 配置文件,好比application.properties或者application.yaml。
    • 操作系统的环境变量。
    • Java的系统变量,即System.getProperties()。
    • JNDI方式指定的属性。
    • 为ServletContext对象配置的参数。
    • 为ServletConfig对象配置的参数。
    • 使用SPRING_APPLICATION_JSON指定的JSON格式的属性,对应的命令行变量名为spring.application.json。
      使用环境变量,样例如下:
      1. SPRING_APPLICATION_JSON='{"my":{"name":"test"}}' java -jar myapp.jar
      复制代码
      使用JVM的系统变量,样例如下:
      1. java -Dspring.application.json='{"my":{"name":"test"}}' -jar myapp.jar
      复制代码
      使用命令行参数,样例如下:
      1. java -jar myapp.jar --spring.application.json='{"my":{"name":"test"}}'
      复制代码
    • 命令行参数。
    • 使用@SpringBootTest指定的参数值。
    • 通过使用@DynamicPropertySource,在测试代码中指定参数。
    • 通过使用@TestPropertySource,在测试代码中指定参数。
    • 开发者工具,支持从$HOME/.config/spring-boot中加载配置参数。
    加载配置文件的优先级:

    • Jar文件内的application.properties或者application.yaml。
    • Jar文件内的application-{profile}.properties或者application-{profile}.yaml。
    • Jar文件外的application.properties或者application.yaml。
    • Jar文件外的application-{profile}.properties或者application-{profile}.yaml。
      SpringBoot框架加载配置文件时,优先读取properties格式的同名配置文件。
      在启动类的main函数中增加如下代码,将显式禁用命令行参数。
      1. SpringApplication.setAddCommandLineProperties(false);
      复制代码
    SpringBoot框架加载application.properties或者application.yaml时,搜索路径如下:

    • 类路径,根路径。
    • 类路径,config包。
    • jar文件地点目录。
    • jar文件地点目录的子目录config。
    • jar文件地点目录的子目录config下的子目录。
    在命令行中增加参数spring.config.name,可以指定配置文件的名称。
    1. java -jar myproject.jar --spring.config.name=myproject
    复制代码
    使用上述样例启动应用程序,SpringBoot框架将搜索并加载配置文件myproject.properties或者myproject.yaml。
    在命令行中增加参数spring.config.location,可以指定配置文件的搜索位置,样例如下:
    1. java -jar myproject.jar --spring.config.location=\
    2.     optional:classpath:/default.properties,\
    3.     optional:classpath:/override.properties
    复制代码
    在配置文件名增加前缀optional:,表示假如找不到该位置的配置文件,并不影相应用程序启动,不会导致应用程序启动失败。
    spring.config.additional-location和spring.config.location的用途相同。
    SpringBoot加载配置文件的方案,机动、强大,可依据业务特点酌情使用,不要花费过多的时间。
    EnvironmentPostProcessor答应在SpringBoot应用启动前修改Environment中定义的属性的值。
    Java Config涉及如下注解:

    • @Value
    • @ConfigurationProperties
    • @Configuration
    • @EnableConfigurationProperties
    • @Validated
    • @Valid
    • @NotNull
    必要联合样例、代码定义,深入理解上述注解的使用方法。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

美丽的神话

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表