IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Springboot中配置文件的加载顺序及多环境配置方式 -> 正文阅读

[Java知识库]Springboot中配置文件的加载顺序及多环境配置方式

Springboot配置文件优先级/顺序

Springboot项目一键启动,所有相关的配置都放置在配置文件中实现自动装载功能。Springboot启动时将会读取这些配置文件,那么这些配置文件的优先级/顺序是如何呢?

总览图

在这里插入图片描述

1.命令行参数

启动java程序时,通过--双减号声明,后面直接配置属性=值即可。

java -jar spring-demo-SNAPSHOT.jar --server.port=8001

2. java:comp/env 的 JNDI 属性

很少见,有兴趣可以去了解下,其实就是Tomcat连接池中的配置

"Java:comp/env/"讲解与JNDI

3.系统属性

可以在java中获取系统属性

System.getProperties();

4.系统环境变量

开发者应该都了解,Windows或是Linux系统中都有环境变量这一概念,以及它的存放位置等。

5.外部副properties/yml文件

JAR包外部的application-XXX.properties或application-XXX.yml配置文件,启动java程序时可以指定外部配置文件

java -jar xxx.jar --spring.config.location=/opt/config/application-dev.yml

6.内部副properties/yml文件

JAR包内部的application-XXX.properties或application-XXX.yml配置文件

7.外部主properties/yml文件

JAR包外部的application.properties或application.yml配置文件;指定文件或目录都行

java -jar xxx.jar --spring.config.location=/opt/config/application.yml
java -jar xxx.jar --spring.config.location=/opt/config/

8.内部主properties/yml

JAR包内部的application.properties或application.yml配置文件

9.@PropertySource指定的文件

@Configuration注解类上的@PropertySource指定的配置文件,一般可以在项目中设置一个配置文件,可以通过@Configuration和@PropertySource来加载一些配置文件。

比如有个user.properties文件

username=zj
password=1234

配置一个类来接口

@Data
public class User {
    private String username;
    private String password;
}
@Configuration
@PropertySource(value = {"classpath:user.properties"}, encoding = "utf-8")
public class UserProperties {

    @Bean
    @ConfigurationProperties
    public User user() {
        return new User();
    }
}

扩展贴士:

在一些注解中,可以使用${}表达式来获取配置文件中的一些配置,如:

可以匹配具体环境下的其他配置文件

@PropertySource("classpath:/application-${spring.profiles.active}.properties")
@Configuration
public class LoadProperties {
 
}

总结

在项目内部中:

  • 同一级的目录中(只后缀名不同)的配置文件中,优先级:properties(最高) > yml > yaml(最低), 优先级高的配置会覆盖优先级低的配置

  • 在整个java项目中,优先级如下:

    • 项目目录/config/xxx配置文件(优先级最高)

    • 项目目录/xxx配置文件

    • 项目名/src/main/resources/config/XXX配置文件

    • 项目名/src/main/resources/XXX配置文件 (优先级最低)

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nHhSRPH2-1666086630164)(imgs5/2.png)]

但是大多数情况下,我们在微服务架构中,可能bootstrap文件用的会多一些,在 Spring Boot 中有两种上下文,一种是 bootstrap另外一种是 application, bootstrap 是应用程序的父上下文,bootstrap用于应用程序上下文的引导阶段,由父Spring ApplicationContext加载。bootstrap 的加载优先于 applicaton,所以优先级从大到小如下:
bootstrap.properties -> bootstrap.yml -> application.properties -> application.yml

从项目内外部情况来分优先级:

项目外部配置文件 > 项目内部配置文件!!!

多环境配置方式

当项目中需要区分多环境时:

  • 文件的命名多是application-{profile}.properties/yml或者是bootstrap-{profile}.properties/yml文件。

  • 或者我们可以在一个配置文件中进行多环境区分,通过---三中划线区分,看项目具体情况吧,两种方法都了解下。

    spring:
      profiles:
        active: dev # 使用开发环境
    
    ---
    server:
      port: 8083
    spring:
      profiles: dev # 开发环境
    
    ---
    
    server:
      port: 8084
    spring:
      profiles: prod # 生产环境
    

激活指定的profile时:

  • 可以在主配置文件中指定spring.profiles.active=环境

  • 可以在命令行中

    java -jar spring-demo-SNAPSHOT.jar --spring.profiles.active=dev
    
  • 可以设置虚拟机参数

    -Dspring.profiles.active=dev
    

参考文档

SpringBoot 配置文件加载优先级

SpringBoot - 配置文件的优先级

SpringBoot 配置文件优先级与多环境配置

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-10-22 21:01:38  更:2022-10-22 21:02:04 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/30 13:15:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码