Spring Boot读取配置文件内容的3种方式(@Value、Environment和@ConfigurationProperties)

当我们开发 Spring Boot 应用时,会遇到读取配置文件的场景,Spring Boot 框架提供了三种读取配置文件的方式,分别是:

  • @Value:通过注解方式读取配置项的值。
  • Environment:通过 Environment 类对象读取配置项的值。
  • @ConfigurationProperties:通过自动映射读取属性文件或 yml 文件中所有以指定前缀开始的配置项。

下面将详细讲解这三种读取配置文件值的方式。

通过 @Value 读取配置项的值

@Value 注解可以用来读取配置文件中的属性值,其使用方式如下:

@Value("${config.property}")
private String configProperty;

在示例代码中,${config.property} 表示需要读取的属性名。其中 ${} 表示 Spring 的 SpEL 表达式,会自动从配置文件中查找相应的属性并进行注入。

例如,假设我们在 application.properties 文件中设置了 config.property=test config property,那么当 Spring Boot 启动后,@Value("${config.property}") 属性注入器会自动读取这个属性值并赋值给 configProperty 变量。

以下是一个使用 @Value 读取默认配置文件的示例代码:

@RestController
@RefreshScope
public class TestController {

    @Value("${config.url}")
    private String url;

    @Value("${config.username}")
    private String username;

    @Value("${config.password}")
    private String password;

    @GetMapping("/config")
    public String getConfig() {
        return "url: " + url + ", username: " + username + ", password: " + password;
    }

}

在代码中,我们使用了 @Value 注解读取 config.propertyconfig.usernameconfig.password 三个属性值,并在 /config 路径上提供了一个 GET 接口,访问该接口时会返回这三个属性值。需要注意的是,这里需要添加 @RefreshScope 注解,这是为了让配置文件的改变可以被实时刷新。

通过 Environment 读取配置项的值

Environment 类提供了一个getProperty方法,可以用来读取指定名称的配置属性。其使用方式如下:

@Autowired
private Environment env;

public String getConfig() {
    String url = env.getProperty("config.url");
    String username = env.getProperty("config.username");
    String password = env.getProperty("config.password");

    return "url: " + url + ", username: " + username + ", password: " + password;
}

在示例代码中,我们先通过 @Autowired 注解自动引入 Environment 对象,然后使用 getProperty 方法来读取 config.urlconfig.usernameconfig.password 这三个配置属性的值。需要注意的是,如果没有配置该属性或该属性值为空,则会返回 null。

以下是一个通过 Environment 读取默认配置文件的示例代码:

@RestController
@RefreshScope
public class TestController {

    @Autowired
    private Environment environment;

    @GetMapping("/config")
    public String getConfig() {
        String url = environment.getProperty("config.url");
        String username = environment.getProperty("config.username");
        String password = environment.getProperty("config.password");
        return "url: " + url + ", username: " + username + ", password: " + password;
    }

}

在代码中,我们使用了 environment.getProperty 方法读取 config.propertyconfig.usernameconfig.password 这三个属性的值,并在 /config 路径上提供了一个 GET 接口,访问该接口时会返回这三个属性值。同样需要添加 @RefreshScope 注解,以便让配置文件的改变可以被实时刷新。

通过 @ConfigurationProperties 读取配置项的值

@ConfigurationProperties 注解可以用于绑定 yml 或 properties 文件中的配置属性,使这些属性可以注入到指定的 Java 对象中。它的使用方式如下:

@Configuration
@ConfigurationProperties(prefix = "config")
public class ConfigProperties {

    private String url;

    private String username;

    private String password;

    // Getter and Setter
}

在示例代码中,@ConfigurationProperties(prefix = "config") 表示需要绑定的配置前缀,即需要读取哪些属性。在这个例子中,我们希望读取 config.urlconfig.usernameconfig.password 这三个属性的值,所以将前缀设置为 config

需要注意的是,类中的属性名称需要和配置文件中的属性名称完全一致。如果配置文件中的属性名为 config.url,那么类中的属性名称也必须是 url

以下是一个使用 @ConfigurationProperties 读取配置文件的示例代码:

@RestController
@RefreshScope
public class TestController {

    @Autowired
    private ConfigProperties config;

    @GetMapping("/config")
    public String getConfig() {
        return "url: " + config.getUrl() + ", username: " + config.getUsername() + ", password: " + config.getPassword();
    }

}

在代码中,我们使用了 @Autowired 注解来自动注入 ConfigProperties 对象,并通过这个对象来读取 config.urlconfig.usernameconfig.password 这三个属性的值。同样需要添加 @RefreshScope 注解,以便让配置文件的改变可以被实时刷新。

以上就是 Spring Boot 读取配置文件内容的 3 种方式:@Value、Environment 和 @ConfigurationProperties 的详细讲解。实际开发中,开发者可以根据自己的具体情况选择最合适的方式来读取配置属性。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Spring Boot读取配置文件内容的3种方式(@Value、Environment和@ConfigurationProperties) - Python技术站

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

相关文章

  • Word的自定义词典是什么?怎么编辑自定义词典

    下面是Word的自定义词典的详细讲解及编辑攻略: 什么是Word的自定义词典? Word的自定义词典是指用户可以将自己常用的词汇添加到Word词典中,使得在拼写检查时这些词汇不再被认为是拼写错误,从而提高用户的工作效率。 如何编辑自定义词典 以下是编辑自定义词典的步骤: 首先,我们需要打开Word,然后打开一个文档,在页面上任意位置输入一个单词,比如“Git…

    other 2023年6月25日
    00
  • cisco交换机IP-MAC地址绑定配置

    Cisco交换机IP-MAC地址绑定配置攻略 在Cisco交换机上配置IP-MAC地址绑定可以增强网络安全性,限制只有特定的MAC地址可以与指定的IP地址通信。下面是详细的配置攻略: 步骤1:进入全局配置模式 首先,通过终端或远程登录进入Cisco交换机的命令行界面。然后,输入以下命令进入全局配置模式: enable configure terminal 步…

    other 2023年7月31日
    00
  • FeatureCAM2018怎么安装?FeatureCAM安装详细图解(附下载地址)

    FeatureCAM 2018安装攻略 FeatureCAM是一款功能强大的计算机辅助制造(CAM)软件,用于自动化生成机械零件的加工程序。下面是FeatureCAM 2018的安装攻略,包括详细的步骤和示例说明。 步骤一:下载FeatureCAM 2018 首先,你需要下载FeatureCAM 2018的安装文件。你可以在官方网站或其他可信的软件下载网站上…

    other 2023年8月4日
    00
  • java虚拟机深入学习之内存管理机制

    Java虚拟机深入学习之内存管理机制攻略 1. 概述 Java虚拟机(JVM)的内存管理机制是Java程序运行的关键部分。了解内存管理机制可以帮助我们优化程序性能、避免内存泄漏和内存溢出等问题。本攻略将详细介绍Java虚拟机的内存管理机制。 2. Java虚拟机内存结构 Java虚拟机的内存可以分为以下几个部分: 2.1. 方法区(Method Area) …

    other 2023年8月1日
    00
  • Gradle的安装和环境变量的配置详解

    一、Gradle的安装 下载Gradle 访问Gradle的官网(https://gradle.org/releases/),在页面上找到“Binary-only downloads”,选择最新版本的Gradle二进制文件下载即可。 解压Gradle 下载完成后解压Gradle,将解压出的文件夹放到某个位置,比如说放在 /usr/local/gradle目录…

    other 2023年6月27日
    00
  • 安卓 获取手机IP地址的实现代码

    获取安卓手机的IP地址可以通过以下步骤实现: 添加网络权限:在AndroidManifest.xml文件中添加以下权限: <uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\" /> <uses-permission androi…

    other 2023年7月31日
    00
  • 如何使用Flutter发布安卓应用

    以下是使用Flutter发布安卓应用的完整攻略: 步骤1:配置Flutter环境 确保您已经正确安装和配置了Flutter开发环境。您可以参考Flutter官方文档进行安装和配置:Flutter安装指南 步骤2:构建应用 使用Flutter开发工具构建您的应用。您可以使用命令行工具或集成开发环境(IDE)如Android Studio或Visual Stud…

    other 2023年10月13日
    00
  • springboot如何接收application/x-www-form-urlencoded类型的请求

    SpringBoot如何接收application/x-www-form-urlencoded类型的请求 在SpringBoot中,接收application/x-www-form-urlencoded类型的请求非常简单。以下是完整的攻略: 步骤一:添加依赖 在pom.xml文件中添加spring-boot-starter-web依赖,以便使用SpringB…

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