Spring Boot读取配置4种方式,建议收藏!

1. 前言

Spring Boot是一个快速搭建基于Spring的Web应用程序的框架。在使用Spring Boot的过程中,我们经常需要读取配置。Spring Boot提供了多种方式来读取配置文件,包括配置文件application.properties和application.yml,环境变量,命令行参数和配置服务器。

2. 使用application.properties和application.yml配置文件

2.1 在application.properties文件中读取配置

在Spring Boot应用程序中,可以通过在application.properties中设置键值对来配置应用程序。例如,假设我们想要在应用程序中设置端口号为8080:

server.port=8080

在Java代码中,我们可以使用@ConfigurationProperties注解将属性注入到Bean中。例如:

import org.springframework.boot.context.properties.ConfigurationProperties;

import org.springframework.stereotype.Component;

@Component

@ConfigurationProperties(prefix="server")

public class ServerConfig {

private int port;

public int getPort() {

return port;

}

public void setPort(int port) {

this.port = port;

}

}

上面的代码将prefix设置为"server",这意味着Spring Boot会寻找所有以"server."开头的属性值,并将它们注入到ServerConfig类的实例中。在上面的例子中,Spring Boot会自动将"server.port"的值注入到port属性中。

2.2 在application.yml文件中读取配置

与application.properties类似,Spring Boot还支持使用YAML格式的文件来配置应用程序。假设我们有以下配置:

server:

port: 8080

在Java代码中,我们可以使用@ConfigurationProperties注解将属性注入到Bean中。与使用application.properties相比,我们只需要更改注解的参数即可:

import org.springframework.boot.context.properties.ConfigurationProperties;

import org.springframework.stereotype.Component;

@Component

@ConfigurationProperties(prefix="server")

public class ServerConfig {

private int port;

public int getPort() {

return port;

}

public void setPort(int port) {

this.port = port;

}

}

3. 使用环境变量

3.1 从系统环境变量中读取配置

Spring Boot还支持从系统环境变量中读取配置。假设我们想要从系统环境变量中获取配置项"MY_APP_HOME"的值,我们可以在Java代码中使用如下代码:

String myAppHome = System.getenv("MY_APP_HOME");

3.2 从操作系统属性中读取配置

Spring Boot还支持从操作系统属性中读取配置。假设我们想要从操作系统属性中获取配置项"my.app.home"的值,我们可以在Java代码中使用如下代码:

String myAppHome = System.getProperty("my.app.home");

4. 使用命令行参数

你也可以在启动应用程序时指定命令行参数来设置配置。假设我们希望在启动应用程序时设置端口号为9090。我们可以在命令行中添加"--server.port=9090"选项。例如:

java -jar myapp.jar --server.port=9090

在Java代码中,我们可以使用如下代码获取命令行参数:

import org.springframework.boot.ApplicationArguments;

import org.springframework.boot.ApplicationRunner;

import org.springframework.stereotype.Component;

@Component

public class MyApplicationRunner implements ApplicationRunner {

@Override

public void run(ApplicationArguments args) throws Exception {

String[] commandLineArgs = args.getSourceArgs();

for (String arg : commandLineArgs) {

System.out.println(arg);

}

}

}

在上面的代码中,我们使用了Spring Boot提供的ApplicationRunner接口,并实现了其中的run方法。在run方法中,我们通过调用args.getSourceArgs()方法获取命令行参数列表。

5. 使用配置服务器

最后,Spring Boot还支持使用配置服务器来管理应用程序的配置。目前,Spring Cloud Config提供了这样一种配置服务器。

配置服务器将应用程序的配置信息存储在一个Git存储库中。应用程序可以通过访问配置服务器来获取配置信息。通过使用Git存储库,我们可以更好地管理应用程序的版本控制和配置。

为了使用配置服务器,我们需要在应用程序的启动脚本中指定配置服务器的URL或其他相关信息。

spring.cloud.config.uri=http://config-server:8888

在上面的例子中,我们将配置服务器的URL设置为"http://config-server:8888"。

有了配置服务器之后,我们在Java代码中就可以使用@EnableConfigServer注解来启用配置服务器。例如:

import org.springframework.cloud.config.server.EnableConfigServer;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

@EnableConfigServer

@SpringBootApplication

public class ConfigServerApplication {

public static void main(String[] args) {

SpringApplication.run(ConfigServerApplication.class, args);

}

}

6. 总结

本文介绍了Spring Boot读取配置的四种方式:使用application.properties和application.yml配置文件,使用环境变量,使用命令行参数和使用配置服务器。

使用Spring Boot读取配置文件是实现应用程序灵活配置的重要方法之一。在开发应用程序时,一定要根据实际情况选择合适的配置方式。

后端开发标签