SpringBoot配置加载,各配置文件优先级对比方式

Spring Boot 在启动时会加载多个配置文件,而不同类型的配置文件有不同的优先级。下面将分别介绍 Spring Boot 配置文件的优先级以及如何加载配置文件。

Spring Boot 配置文件的优先级

Spring Boot 支持多种类型的配置文件,这些类型的配置文件按照以下优先级进行加载:

  1. bootstrap.propertiesbootstrap.yml
  2. application.propertiesapplication.yml
  3. 当前环境下的 application-{profile}.propertiesapplication-{profile}.yml。其中,“{profile}”为 Spring Boot 配置文件中定义的激活的 Profile 名称,默认为 default
  4. 其他自定义配置文件,例如 application-test.propertiesapplication-test.yml

以上配置文件中的后面的配置文件会覆盖前面的配置文件中的相同配置选项。

配置文件的加载方式

Spring Boot 支持多种方式加载配置文件,下面将针对不同加载方式进行详细说明:

1. 通过 Environment 对象加载配置文件

可以通过 Environment 对象加载配置文件,示例代码如下:

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        ConfigurableApplicationContext context = SpringApplication.run(Application.class, args);
        Environment env = context.getEnvironment();
        String property = env.getProperty("spring.datasource.url");
        System.out.println(property);
    }
}

通过 getenv() 方法获取到 Environment 对象之后,可以通过 getProperty() 方法获取指定的配置项的值。在上述示例中获取到了数据库 URL 配置项的值。

2. 通过 @Value 注解注入配置项的值

在 Spring Boot 中,可以使用 @Value 注解将配置项的值注入到类或方法中。示例代码如下:

@Component
public class MyBean {
    @Value("${my.configuration.property}")
    private String myProperty;

    // ...
}

在上述示例中,使用 @Value 注解将 my.configuration.property 配置项的值注入到 myProperty 字段中。在其他使用 MyBean 类的地方,可以通过访问 myProperty 字段获取到该配置项的值。

示例说明

以下两个示例将分别演示 Spring Boot 配置文件的优先级以及配置加载方式的使用。

示例一

假设我们有以下配置文件:

application.properties

spring.datasource.url=jdbc:mysql://localhost:8080/mydatabase
spring.datasource.username=root

application-dev.properties

spring.datasource.url=jdbc:mysql://localhost:8080/mydatabase_dev

在上述示例中,application-dev.properties 配置文件会覆盖 application.properties 配置文件中的 spring.datasource.url 配置项,使其值变为 jdbc:mysql://localhost:8080/mydatabase_dev

示例二

假设我们有以下配置文件:

application.yml

my.configuration.property: Hello World!

我们可以在任意一个类或方法中通过使用 @Value 注解将该配置项的值注入到其中。示例代码如下:

@Component
public class MyBean {
    @Value("${my.configuration.property}")
    private String myProperty;

    public void printMyProperty() {
        System.out.println("My Property Value: " + myProperty);
    }
}

在上述示例中,使用 @Value 注解将 my.configuration.property 配置项的值注入到 myProperty 字段中。在 printMyProperty() 方法中打印了该配置项的值。在其他使用 MyBean 类的地方,可以调用 printMyProperty() 方法获取到该配置项的值。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot配置加载,各配置文件优先级对比方式 - Python技术站

(0)
上一篇 2023年6月25日
下一篇 2023年6月25日

相关文章

  • 支付宝没有访问网络的权限是什么意思?(附解决方法)

    当我们使用支付宝时,有时会遇到“支付宝没有访问网络的权限”这一提示。这意味着支付宝应用没有被授予访问互联网的权限,因此它不能连接到网络以执行其功能。以下是解决这个问题的几种方法。 1. 确认网络连接状态 首先,您需要确认您的设备是否可以连接到互联网。您可以通过在浏览器中打开一个网页或打开其他应用程序来测试网络连接。如果您的设备没有连接到互联网,则必须先连接设…

    other 2023年6月27日
    00
  • node.js(基础四)_express基础

    Node.js(基础四)_Express基础 在Node.js开发中,我们常常需要使用Web框架。其中,Express是一个流行的开源Node.js Web应用程序框架。它为Web应用程序提供了许多有用的功能,例如路由、模板引擎等。本文将介绍如何使用Express框架。 安装Express 要使用Express框架,首先需要安装它。可以使用以下命令在命令行中…

    其他 2023年3月29日
    00
  • 保护DNS服务器的10点方法小结

    以下是针对“保护 DNS 服务器的 10 点方法小结”的完整攻略,包括示例说明。 1. 使用防火墙保护DNS服务器 配置防火墙来限制访问DNS服务器的地址和端口。只有授权的网络和IP地址可以访问DNS服务器,这有助于保护DNS服务器不受到来自危险来源的攻击。例如,这是防火墙规则的示例: iptables -I INPUT -p udp –dport 53 …

    other 2023年6月27日
    00
  • C语言函数的基本使用和递归详解

    C语言函数的基本使用和递归详解 函数是C语言的核心特点之一,它可以将一些逻辑代码封装在函数内,形成独立的功能模块,便于调用和复用。本文将详细介绍函数的基本使用方法以及递归在函数中的应用。 函数的基本使用方法 在C语言中定义一个函数的基本结构如下: 返回类型 函数名(形参列表){ 函数体 return 返回值; } 返回类型:指定函数返回值的类型。如果函数不需…

    other 2023年6月27日
    00
  • 小爱同学怎么自定义唤醒词 小爱同学自定义唤醒词教程

    小爱同学怎么自定义唤醒词 1. 概述 小爱同学是小米公司推出的人工智能语音交互产品,用户可以通过唤醒“小爱同学”来与其进行语音交互。默认的唤醒词是“小爱同学”,但是用户可以自定义唤醒词。 2. 自定义唤醒词的步骤 2.1 修改设备名称 首先,需要将设备名称修改为新的唤醒词。具体操作步骤如下: 打开米家APP,在设备列表中找到需要修改的小爱同学设备。 点击设备…

    other 2023年6月25日
    00
  • 将ChatGPT接入微信实现智能回复功能

    非常感谢您对“将ChatGPT接入微信实现智能回复功能”的关注,下面是详细的攻略说明。 准备工作 在开始接入ChatGPT之前,需要先准备好以下工作: 注册微信开发者平台账号,创建公众号并获取AppID和AppSecret。 注册腾讯云账号,并在API密钥管理中创建访问密钥。 接入ChatGPT 接下来我们需要通过以下步骤将ChatGPT接入微信实现智能回复…

    other 2023年6月27日
    00
  • java使用Validation进行数据校验的方式总结

    Java使用Validation进行数据校验的方式总结 Java提供了一种方便的数据校验框架——Validation,它可以帮助开发人员轻松地对数据进行校验和验证。以下是使用Validation进行数据校验的方式的详细攻略: 1. 添加依赖 首先,需要在项目的构建文件中添加Validation的依赖。对于Maven项目,可以在pom.xml文件中添加以下依赖…

    other 2023年10月17日
    00
  • Android中用Builder模式自定义Dialog的方法

    当在Android应用程序中需要自定义对话框时,可以使用Builder模式来创建和配置对话框。Builder模式提供了一种简洁的方式来构建和设置对话框的各个属性。下面是使用Builder模式自定义Dialog的方法的详细攻略: 创建自定义对话框的布局文件: 首先,创建一个XML布局文件来定义自定义对话框的外观和布局。例如,创建一个名为custom_dialo…

    other 2023年9月6日
    00
合作推广
合作推广
分享本页
返回顶部