玩转springboot之springboot配置文件

server/2024/10/8 20:45:32/

springboot配置文件

虽然springboot提供了一系列的默认配置,但是还是需要使用配置文件来进行一些自定义的配置

springboot中配置文件名称叫做application.properties或者application.yml

配置文件加载顺序

springboot 启动会扫描以下位置的application.properties/yml文件作为Spring boot的默认配置文件

  • file:./config/ 当前项目根目录下的config目录下

  • file:./ 当前项目根目录下

  • classpath:/config/ 项目resources目录下的config目录下

  • classpath:/ 项目resources目录下

优先级由高到底,高优先级的配置会覆盖低优先级的配置,SpringBoot会从这四个位置全部加载主配置文件

也可以使用命令行启动项目时通过spring.config.location来改变默认的配置文件位置,多个路径使用逗号隔开,可以使用-spring.config.name来指定文件的名字

指定外部配置文件

可以使用@PropertySource来指定除默认配置文件之外的配置

@PropertySources(
        {
                @PropertySource(value = "classpath:test.properties")
        }
)
@Configuration
public class MainConfig4 {

}

自定义配置

对于自定义的配置,可以使用@ConfigurationProperties标注所属类来进行与配置文件映射,当然映射的前提是这个类要交由spring ioc容器进行管理,所以首先要将该类作为组件进行注册

@Component
@ConfigurationProperties(prefix = "custom")
public class CustomConfig {

    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

这样做虽然可以正常的获取配置,但是在进行配置的时候发现在进行配置的时候没有提示,凭什么人家的有提示,我的没有

加上这个依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>

进行自定义类配置时也如德芙巧克力般丝滑了

这种方式默认是针对于默认的配置文件的,如果不想在默认配置文件中进行配置的话,还需要加上spring的@PropertySource注解来标明所对应的配置文件

bootstrap和application两种配置文件的区别

在 Spring Boot 中有两种上下文,一种是 bootstrap,另外一种是 application,application 配置文件主要用于 Spring Boot 项目的自动化配置;bootstrap 是应用程序的父上下文,也就是说 bootstrap 加载优先于 application

  • bootstrap 主要用于从额外的资源来加载配置信息,还可以在本地外部配置文件中解密属性
  • bootstrap 里面的属性会优先于application加载,且默认不能被本地相同配置覆盖

bootstrap应用场景

  • 使用spring cloud config配置中心时,需要在bootstrap中配置配置中心相关属性
  • 配置一些固定不能被覆盖的属性

配置加载加载顺序

优先级从上到下

  • 命令行参数
  • 来自java:comp/env的JNDI属性
  • java系统属性
  • 操作系统环境变量
  • RandomValuePropertySource配置的random.*属性值
  • jar包外部的application-{profile}.properties
  • jar包内部的application-{profile}.properties
  • jar包外部的application.properties
  • jar包内部的application.properties
  • @Configuration注解类上的@PropertySource
  • 通过SpringApplication.setDefaultProperties指定的默认属性

https://zhhll.icu/2021/框架/springboot/基础/2.配置文件/

本文由 mdnice 多平台发布


http://www.ppmy.cn/server/54223.html

相关文章

webrtc-m120编译 (m126)

WebRTC实时互动入门 环境 lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 22.04.4 LTS Release: 22.04 Codename: jammyuname -a Linux yqw-Lenovo-XiaoXinPro-13ARE-2020

grpc学习golang版( 五、多proto文件示例 )

系列文章目录 第一章 grpc基本概念与安装 第二章 grpc入门示例 第三章 proto文件数据类型 第四章 多服务示例 第五章 多proto文件示例 第六章 服务器流式传输 第七章 客户端流式传输 第八章 双向流示例 文章目录 一、前言二、定义proto文件2.1 公共proto文件2.2 语音唤醒proto文…

关于WebSocket

WebSocket 与传统的 HTTP 协议对比 在实时通信领域&#xff0c;传统的 HTTP 协议存在以下一些问题&#xff1a; 频繁的请求和响应&#xff1a;每次通信都需要建立和关闭连接&#xff0c;带来额外的开销。高延迟&#xff1a;每次通信都需要经过多个网络层的传输&#xff0c;延…

韩语日常口语留学韩语旅游韩语口语柯桥语言培训

韩语每日一词打卡&#xff1a;행정적[행정적]【名词】行政 原文:나라는 항상 행정적 명령을 통해 경제운행을 조절합니다. 意思&#xff1a;国家经常通过行政命令去调节经济的运行。 【原文分解】 1、항상[항상]总是 &#xff0c;经常 2、나라[나라]国家 3、명령[명:녕]命令 …

鸿蒙NEXT

[中国&#xff0c;东莞&#xff0c;2024年6月24日] 华为开发者大会&#xff08;HDC&#xff09;正式开幕&#xff0c;带来全新的 HarmonyOS NEXT、盘古大模型5.0等最创新成果&#xff0c;持续为消费者和开发者带来创新体验。 HarmonyOS NEXT 鸿蒙生态 星河璀璨 鸿蒙生态设备数…

WordPress中文网址导航栏主题风格模版HaoWa

模板介绍 WordPress响应式网站中文网址导航栏主题风格模版HaoWa1.3.1源码 HaoWA主题风格除行为主体导航栏目录外&#xff0c;对主题风格需要的小控制模块都开展了敞开式的HTML在线编辑器方式的作用配备&#xff0c;另外预埋出默认设置的编码构造&#xff0c;便捷大伙儿在目前…

串口通信、IIC时序整理

一、串行通信与并行通信 并行通信是指多个比特同时通过并行线进行传输&#xff0c;这种方式的传输速率较高&#xff0c;但会占用大量的芯片资源&#xff1b; 串行通信是指将数据拆分成一个个比特&#xff0c;按照先后次序在一根总线上进行发送&#xff0c;串行通信有着系统占…

监听 web 容器内的网络请求(错误的方案)

需求 iOS 项目中 wkwebview 实现的 web 容器&#xff0c;需要监听 web 容器内的所有网络请求 实现 在 iOS 项目中使用 WKWebView 实现的 Web 容器&#xff0c;监听 Web 容器内的网络请求是一个常见需求。可以通过实现 WKURLSchemeHandler 协议来处理自定义的 URL scheme&#…