首页 > 其他分享 >SpringBoot配置加载方式

SpringBoot配置加载方式

时间:2023-08-25 13:55:47浏览次数:48  
标签:文件 SpringBoot spring 配置 jar 加载 properties 属性

在开发中,我们经常会和配置打交道,Spring Boot为了方便配置的的管理和加载,提供了灵活的配置文件加载机制。它允许从多个来源中加载应用配置信息。如系统默认配置、外部配置文件、环境变量、命令行参数、数据库、配置中心等。下面介绍几种常见的属性来源配置方式。

命令行参数

Spring Boot 允许您通过命令行参数来覆盖属性值。例如,java -jar app.jar --server.port=8081 可以设置服务器端口为 8081。

//其中args就是用来接收命令行参数的。
public static void main(String[] args) {
    SpringApplication.run(DemoApplication.class, args);
}

环境变量

Spring Boot 支持通过环境变量来配置属性。环境变量的名称需要遵循一定的规则,如 SERVER_PORT 可用于直接设置服务器端口。

Java系统属性

系统属性是由 Java 虚拟机(JVM)提供的一组键值对,用于表示关于运行环境和系统配置的信息。

  1. 获取系统属性
//如果没有找到对应的属性,则返回 `null`
System.getProperty("os.name");
  
//如果没有找到对应的属性,返回默认值"default_property_value"
System.getProperty("custom.property", "default_property_value");
  1. 设置系统属性

设置系统属性有两种方式,一种是通过代码进行设置,另一种是通过命令行参数: 在运行 Java 程序时,使用 -D 参数来设置自定义系统属性。

  • 通过代码设置系统属性
System.setProperty("a", "bbb");
  • 通过命令行参数设置系统属性
//启动时设置自定义属性
java -Dcustom.property=custom-value -jar app.jar

//启动时设置服务端口
java -Dserver.port=8083 -jar app.jar

常见的系统属性

  • "user.home":用户的主目录。
  • "user.name":用户账号名称
  • user.dir:用户当前工作目录
  • "java.version":Java 运行时环境的版本。
  • "file.separator":文件路径分隔符。
  • "line.separator":行分隔符。
  • "java.home":Java 安装的路径。
  • "os.name":操作系统的名称。
  • "os.arch":操作系统架构
  • "os.version":操作系统版本

默认属性

SpringBoot会自动加载一些默认属性,这些属性可以直接在应用程序中使用。例如:server.port默认属性指定了应用程序的服务器端口。默认属性可以在org/springframework/boot/spring-boot-autoconfigure/2.7.13/spring-boot-autoconfigure-2.7.13.jar!/META-INF/spring-configuration-metadata.jsonorg/springframework/boot/spring-boot/2.7.13/spring-boot-2.7.13.jar!/META-INF/spring-configuration-metadata.json中查看。

外部属性文件

Spring Boot 支持使用外部属性文件来配置应用程序。默认情况下,它会尝试加载bootstrap.propertiesbootstrap.yamlapplication.propertiesapplication.yml 文件。

我们可以在这些文件中定义自定义属性以覆盖默认属性。外部属性文件通常放在应用程序的 classpath中。

外部属性文件可以指定环境 profiles。可根据不同的激活 profile 加载不同的属性文件。例如,application-dev.properties 适用于 dev profile,application-prod.properties 适用于 prod profile。可以使用 spring.profiles.active 属性来设置激活的 profile。

自定义属性文件

我们可以创建自己的属性文件并加载它们。Spring默认只支持加载properties属性文件。可以通过两种方式:一种是通过命令行参数加载,另一种是通过编写代码实现。

命令行加载外部本地properties文件

通过指定 spring.config.location 属性,可以加载外部的属性文件。例如,java -jar app.jar --spring.config.location=/path/to/custom.properties

代码加载外部properties文件

使用@PropertySource注解来加载。

@PropertySource(value = "classpath:custom.properties", ignoreResourceNotFound = true)

从远程配置中心加载

也是通过自定义属性源的方式来实现。后面专门写文章来说明。

属性优先级

Spring Boot 的属性加载具有优先级顺序,高优先级的属性会覆盖低优先级的属性。

属性的优先级从高到低依次为:命令行参数>环境变量>Java系统属性>自定义属性文件>profile-specific 文件>默认属性

这边文章主要介绍了几种常见的属性来源配置方式。下面会针对配置这块出一系列文章,让我们知其然并知其所以然。

计划如下:

  1. 如何将外部配置信息引入 Spring 应用程序的环境中?有哪些方式,不同类型properties、yaml、json等;
  2. 自定义属性源,从远程配置中心加载;
  3. 从多个来源获取属性值并将它们合并到统一的属性源CompositePropertySource;
  4. SpringBoot对属性配置的抽象,加载属性源码分析。

标签:文件,SpringBoot,spring,配置,jar,加载,properties,属性
From: https://www.cnblogs.com/brilliantl/p/17656731.html

相关文章

  • 如何在WindowsServer服务器上配置SQL Server数据库?
    作者:西瓜程序猿主页传送门:https://www.cnblogs.com/kimiliucn服务器版本:WindowsServer2016数据库版本:SQLServer2016当时买了一台WindowsServer服务器,然后安装上SQLServer后,想通过外网访问到数据库,遇到了一些问题,查了很多资料也踩了很多坑。本文主要介绍如何配置SQL......
  • springboot整合redis回滚
    1:添加依赖2:yml中配置连接,如:host,password,port3:@autowired注解注入Redistemplate调用方法生成对象 为了方便公司开发,一般会对数据进行序列化存储,这时需要创建配置类进行全局设置packagecom.example.config;importcom.fasterxml.jackson.annotation.JsonAutoDetect;importco......
  • Spring加载机制的设计与实现
    骑士李四记录:1.ApplicationContext是什么ApplicationContext是Spring上下文的核心接口,描述了Spring容器的所有基本功能,是SpringContext(Spring上下文)模块的核心设计。想了解Spring的加载机制,则必须先明白SpringApplicationContext(后简称Spring上下文)到底是什么、是怎么设计的、......
  • node.js环境变量配置
    node.js环境变量配置环境配置主要配置的是npm安装的全局模块所在的路径,以及缓存cache的路径。为什么需要配置?因为以后在执行类似:npminstallexpress[-g](后面的可选参数-g,g代表global全局安装的意思)的安装语句时,会将安装的模块安装到【C:\Users\用户名\AppData\Roaming\npm】......
  • spark配置文件介绍
    spark配置文件介绍spark有很多参数,然后会有不同的配置文件,这里做一下介绍,也供自己以后查询。1.sparkproperties:这个可以控制应用程序的绝大部分属性。并且可以通过SparConf对象挥着Java系统属性进行配置;2.环境变量(Environmentvariable):这个可以分别对每台机器单独进行相应设置,比......
  • Ribbon-饥饿加载
     可以加载多个  ......
  • 基于springboot城镇保障性住房管理系统
    随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了城镇保障性住房管理系统的开发全过程。通过分析城镇保障性住房管理系统管理的不足,创建了一个计算机管理城镇保障性住房管理系统的方案。文章介绍了城镇保障性住房管理系统的系统分析部......
  • 基于SpringBoot的企业资产管理系统
    本企业资产管理系统预期设计的主要功能有用户信息管理、资产分类管理、资产信息管理、资产借出管理、资产归还管理、资产维修管理等模块。通过用户信息管理功能模块,相关使用者可以对用户信息进行管理,比如可以选择修改、删除某位用户,也可以选择增加、查询用户信息。通过资产分类管理......
  • 基于springboot共享汽车管理系统
    随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了共享汽车管理系统的开发全过程。通过分析共享汽车管理系统管理的不足,创建了一个计算机管理共享汽车管理系统的方案。文章介绍了共享汽车管理系统的系统分析部分,包括可行性分析等,系统设......
  • 基于springboot工程教育认证的计算机课程管理平台
    随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了基于工程教育认证的计算机课程管理平台的开发全过程。通过分析基于工程教育认证的计算机课程管理平台管理的不足,创建了一个计算机管理基于工程教育认证的计算机课程管理平台的方案。文......