首页 > 其他分享 >【Spring Boot 初识丨外部化配置属性详解 】

【Spring Boot 初识丨外部化配置属性详解 】

时间:2023-07-29 11:35:39浏览次数:37  
标签:name Spring Boot application 初识 my 属性

上一篇讲了 Spring Boot 的依赖注入 本篇来讲一讲Spring Boot 外部化配置 Spring Boot 初识:

(PropertySource)

加载顺序


  Spring Boot 使用一种非常特殊的PropertySource顺序,旨在允许合理地覆盖值。后面的属性源可以覆盖前面定义的值。按以下顺序考虑来源:

  1. 默认属性(由SpringApplication.setDefaultProperties指定)。
  2. @Configuration类上的@PropertySource注释。请注意,在刷新应用程序上下文之前,不会将此类属性源添加到环境中。这对于配置某些属性为时已晚,例如在刷新开始之前读取的logging.*和spring.main.*。
  3. 配置数据(例如application.properties文件)。
  4. RandomValuePropertySource 加载random.* 形式的属性。
  5. 操作系统环境变量。
  6. Java 系统属性 ( System.getProperties())。
  7. 通过java:comp/env配置的 JNDI 属性
  8. ServletContext 初始化参数。
  9. ServletConfig 初始化参数。
  10. SPRING_APPLICATION_JSON(嵌入环境变量或系统属性中的内联 JSON)的属性。
  11. 命令行参数。
  12. 测试环境中的属性properties@SpringBootTest测试注解
  13. 测试中的@DynamicPropertySource注释。
  14. 测试环境中的 @TestPropertySource注解配置。
  15. Devtools 全局配置.$HOME/.config/spring-boot (当 devtools 被激活 ~/.spring-boot-devtools.properties)

配置数据文件按以下顺序考虑:

  1. jar 包外的 application-{profile}.propertiesapplication-{profile}.yml 配置
  2. jar 包内的 application-{profile}.propertiesapplication-{profile}.yml 配置
  3. jar 包外的 application.propertiesapplication.yml 配置
  4. jar 包内的 application.propertiesapplication.yml 配置

命令行属性


  默认情况下, SpringApplication 会获取--参数(例如 --server.port=9000 ),并将这个 property 添加到 Spring 的 Environment中。如前所述,命令行属性始终优先于基于文件的源属性。   如果不想加载命令行属性,可以通过 SpringApplication.setAddCommandLineProperties(false)禁用。

json应用程序属性


  环境变量和系统属性通常有限制,这意味着某些属性名称无法使用。为了解决这个问题,Spring Boot 允许您将一个属性块编码到单个 JSON 结构中。   当您的应用程序启动时,任何spring.application.jsonSPRING_APPLICATION_JSON属性都将被解析并添加到Environment. 例如,可以在 UN*X shell 的命令行上提供SPRING_APPLICATION_JSON属性作为环境变量:

$ SPRING_APPLICATION_JSON='{"my":{"name":"test"}}' java -jar myapp.jar

在前面的示例中,您最终会进入Spring Environmentmy.name=test 。 同样的, 也可以提供JSON属性:

$ java -Dspring.application.json='{"my":{"name":"test"}}' -jar myapp.jar

或者json 命令行参数:

$ java -jar myapp.jar --spring.application.json='{"my":{"name":"test"}}'

如果要部署到经典的Application Server,您还可以使用名为java:comp/env/spring.application.json 的 JNDI 变量。

标签:name,Spring,Boot,application,初识,my,属性
From: https://blog.51cto.com/u_16111319/6891150

相关文章

  • 【手撕 Spring】Spring 的新特性
    ......
  • springboot整合mqtt 消费端
    用到的工具:EMQX,mqttx,idea工具使用都很简单,自己看看就能会。订阅端config代码:packagecom.example.demo.config;importlombok.extern.slf4j.Slf4j;importorg.eclipse.paho.client.mqttv3.*;importorg.eclipse.paho.client.mqttv3.persist.MemoryPersistence;imp......
  • SpringBoot学习---第五篇:动态数据源(多数据源自动切换)
    目录一、应用场景二、准备工作2.1 创建数据表2.2添加依赖2.3生成bean、dao、mapper三、动态数据源3.1 配置文件application.properties3.2动态数据源核心代码3.3 启动类添加注解四、使用方法4.1Controller4.2Service五、测试六、Springboot2.0动态多数据源切换一、应用......
  • Spring Environment体系
    PropertySource类型继承图如下所示,只是挑选了一些常见的实现类。PropertySource是一个抽象类,代表一个属性源,SpringEnvironment中所有的属性就存储在一个PropertySource列表中,属性源可以是一个Map、Resource(yaml文件,properties文件)、命令行(--形式)、系统变量等等。注:Pr......
  • SpringBoot -
    1.环境搭建1.1Spring.io建立项目通过Spring.io网站,自动建立一个springboot项目,失败的常见问题列表:SpringInitailizer在创建的过程中,如果出现“java:警告:源发行版17需要目标发行版17”的错误,是JDK配置不对导致,解决方法参见:IDEA运行Spring工程报错:java:警告:源发......
  • SpringMVC异常处理
    1.SpringMVC提供了三种异常处理方式 简单异常处理器:使用springMVC内置的异常处理器处理SimpleMappingExceptionResolver; 自定义异常处理器:实现HandlerExceptionResolver接口,自定义异常进行处理; 注解方式:使用@ControllerAdvice+@ExceptionHandler来处理。  第三......
  • 【手撕 Spring】一键开启 Spring 入门之路
    ......
  • SpringBoot实践(十六):mark一个开源商品网站
    特点:前后端分离,vue框架,包含小程序、APP,界面风格类似小米商城;外贸网站源码:CRMEB官网-开源会员管理电商营销系统,助力企业发展!特点:thinkphp,待研究;......
  • Pipeline SpringBoot-deploy-CD
    pipeline{agent{kubernetes{cloud'kubernetes'yaml'''apiVersion:v1Kind:Podspec:imagePullSecrets:-name:harbor-admincontainers:-name:kubectlimage:harbor.oldxu.net/ops/kubectl:1.23.15imag......
  • Pipeline SpringBoot-deploy-CI
    pipeline{agent{kubernetes{cloud'kubernetes'yaml'''apiVersion:v1Kind:Podspec:imagePullSecrets:-name:harbor-adminvolumes:-name:datanfs:server:192.168.1.21path:/da......