bean覆盖 springboot_Springboot配置加载覆盖值顺序
Springboot允许您将配置外部化,以便在不同的环境中使用相同的应用程序代码。可以使用properties文件、yaml文件、环境变量和命令行参数来外部化配置。属性值可以通过使用@Value注释直接注入bean,通过Spring的环境抽象访问,或者通过@ConfigurationProperties绑定到结构化对象。
Springboo使用了一个非常特殊的 PropertySource 顺序,该顺序设计为允许合理地覆盖值。属性按以下顺序考虑:
1、开发工具主目录上的全局设置属性(~/.spring-boot-devtools.properties,当开发工具处于活动状态时)
2、测试中的@TestPropertySource注解
3、测试的属性。在@SpringBootTest和测试注释上提供,用于测试应用程序的特定部分。
4、命令行参数
5、SPRING_APPLICATION_JSON的属性(嵌入在环境变量或系统属性中的内联json)。
6、ServletConfig 初始化参数
7、ServletContext 初始化参数
8、java:comp/env的JNDI参数
9、Java系统属性(System.getProperties()).
10、操作系统环境变量.
11、RandomValuePropertySource,其属性仅为random.*。
12、在打包的JAR之外配置特定的应用程序属性(application-{profile}.properties和yaml变量)。
13、在打包的JAR之中配置特定的应用程序属性(application-{profile}.properties和yaml变量)
14、打包JAR之外的应用程序属性(application.properties和yaml变量)。
15、打包JAR之内的应用程序属性(application.properties和yaml变量)。
16、@PropertySource注解在你的@Configuration 类.
17、默认属性(通过设置SpringApplication.setDefaultProperties指定)。
为了提供一个具体的示例,假设您开发了一个使用name属性的@Component,如下例所示:
import org.springframework.stereotype.*;
import org.springframework.beans.factory.annotation.*;
@Component
public class MyBean{
@Value("${name}")
private String name;
// ...
}
在应用程序类路径(例如,在JAR中)上,可以有一个application.properties文件,该文件为name提供了一个合理的默认属性值。在新环境中运行时,可以在jar外部提供application.properties文件来覆盖名称。对于一次性测试,您可以使用特定的命令行开关(例如,java -jar app.jar --name="Spring")启动。
可以在命令行上使用环境变量提供SPRING_APPLICATION_JSON属性。例如,可以在un*x shell中使用以下行:
$ SPRING_APPLICATION_JSON='{"acme":{"name":"test"}}' java -jar myapp.jar
在前面的示例中,您将在Spring环境中得到 acme.name=test。您还可以在系统属性中以spring.application.json的形式提供json,如下例所示:
$java -Dspring.application.json='{"name":"test"}' -jar myapp.jar
还可以使用命令行参数提供JSON,如下例所示:
$java -jar myapp.jar --spring.application.json='{"name":"test"}'
您还可以将JSON提供为JNDI变量,如下:java:comp/env/spring.application.json
bean覆盖 springboot_Springboot配置加载覆盖值顺序相关推荐
- 3springboot:springboot配置文件(外部配置加载顺序、自动配置原理,@Conditional)
1.外部配置加载顺序 SpringBoot也可以从以下位置加载配置: 优先级从高到低 高优先级的配置覆盖低优先级的配置,所有的配置会形成互补配置 1.命令行参数 所有的配置都可以在命令行上进行指定 ...
- 二、SpringBoot配置-简述配置加载原理
springboot使用一个全局配置文件 application.properties application.yml 配置文件放在src/main/resources目录或者类路径/config下 ...
- Spring boot外部配置加载顺序
外部配置加载顺序 Spring boot 可以从以下位置加载配置 优先级从高到低 高优先级的配置,覆盖低优先级的配置 所有的配置,会形成互补配置 官网,给出了17个位置 这里,只介绍常用的11个位置 ...
- SpringBoot_配置-外部配置加载顺序
接下来我们再来看SpringBoot的一个特点,外部配置的加载顺序,也就是说,SpringBoot我们要写一些配置,配置可以写在我们的配置文件,application.properties,放到类路径 ...
- Dubbo(十)之配置加载流程
转载自 Dubbo配置加载流程 Dubbo 中的配置加载流程介绍 此篇文档主要讲在应用启动阶段,Dubbo框架如何将所需要的配置采集起来(包括应用配置.注册中心配置.服务配置等),以完成服务的暴露和 ...
- 配置文件加载位置||外部配置加载顺序||自动配置原理
配置文件加载位置 SpringBoot会从这四个位置全部加载主配置文件:互补配置: 外部配置加载顺序 自动配置原理 1.自动配置原理: 1).SpringBoot启动的时候加载主配置类,开启了自动配置 ...
- 对集合变量定义赋值_SpringBoot配置加载原理(自定义加载配置)
前言 在SpringBoot应用程序中会有很多的地方定义配置文件,如: bootstrap.properties application.properties 或者是SpringCloud中定义的远程 ...
- Soul网关源码阅读(九)插件配置加载初探
Soul网关源码阅读(九)插件配置加载初探 简介 今日来探索一下插件的初始化,及相关的配置的加载 源码Debug 插件初始化 首先来到我们非常熟悉的插件链调用的类: SoulWebHa ...
- Nginx配置及配置加载
Nginx配置(Directives) Nginx默认配置 worker_processes 1;events {worker_connections 1024; }http {include mim ...
最新文章
- python file_python3之File文件方法
- Android+高通 MIPI转LVDS显示屏调试之---基于SD65DSI84
- Matlab的不同进制转换
- 结合代码详细聊聊 Java 网络编程中的 BIO、NIO 和 AIO
- diff git 代码实现_Git 自救指南:这些坑你都跳得出吗?
- java oop入门_java入门(十六) | OOP(三)之构造方法
- python读excel字体颜色_python操作excel之设置字体颜色及格式
- vue+nodejs 将canvas发布到dlna投屏服务
- 微信多开txt_微信(电脑版)多开教程
- 鸢尾花分类_基于鸢尾花(iris)数据集的逻辑回归分类实践
- 一个华为设备防病毒 ACL 配置
- 用Python快速找到出现次数最多的数据
- java电器类代码_阅读下列说明和Java代码,将应填入(n)处的字句写在对应栏内。...
- java进销存管理系统设计_基于JAVA的企业进销存管理系统的设计与实现
- 百度竞价账户关键词分类
- JAVA储存_关于JAVA数据储存
- 脱口而出的 “ 感谢的语言 ”
- 为啥linux识别螃蟹驱动,螃蟹卡 RTL8168 更新驱动解决 BBR 单线程限速
- allow_url_fopen和allow_url_include详解
- WinRAR修复解压文件