Spring Boot 读取环境变量的实现

引言

在Spring Boot中,我们经常需要读取环境变量来配置我们的应用程序。环境变量可以包含诸如数据库连接信息、服务端口等配置参数,这样我们可以根据不同的环境来配置不同的参数,从而方便地进行应用程序的部署和管理。本文将介绍如何使用Spring Boot读取环境变量,并提供了详细的步骤和代码示例。

整体流程

下面是实现Spring Boot读取环境变量的整体流程,我们可以使用一个表格来展示每个步骤和需要做的事情。

gantt
    dateFormat  YYYY-MM-DD
    title Spring Boot读取环境变量的实现流程

    section 创建Spring Boot项目
    创建Spring Boot项目       :a1,2021-01-01,4d
    添加依赖             :a2,after a1,3d
    编写代码             :a3,after a2,5d

    section 读取环境变量
    读取环境变量             :b1,after a3,3d
    使用环境变量             :b2,after b1,5d

    section 运行项目
    编译打包               :c1,after b2,2d
    运行项目               :c2,after c1,5d
    测试环境变量是否生效        :c3,after c2,3d

    section 文章整理
    整理文章               :d1,after c3,4d

创建Spring Boot项目

首先,我们需要创建一个Spring Boot项目。你可以使用你熟悉的IDE,如IntelliJ IDEA或Eclipse,来创建一个新的Spring Boot项目。在创建项目时,我们需要选择Spring Boot的起步依赖,如Spring Web或Spring Data JPA,这取决于你的具体需求。

添加依赖

接下来,我们需要在项目的pom.xml文件中添加Spring Boot的依赖。在这个例子中,我们将使用Spring Web依赖来创建一个简单的Web应用程序,并读取环境变量。

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

编写代码

在项目中,我们需要编写代码来读取环境变量。首先,我们需要在application.propertiesapplication.yml文件中配置环境变量。例如,我们可以在application.properties文件中添加以下配置:

# 数据库连接信息
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=123456

# 服务端口
server.port=8080

然后,我们可以使用@Value注解来读取这些环境变量。在Spring Boot中,@Value注解可以帮助我们注入配置文件中的值。

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class MyController {

    @Value("${spring.datasource.url}")
    private String dbUrl;

    @Value("${spring.datasource.username}")
    private String dbUsername;

    @Value("${spring.datasource.password}")
    private String dbPassword;

    @Value("${server.port}")
    private int serverPort;

    @GetMapping("/")
    public String home() {
        return "数据库连接信息:" + dbUrl + ", " + dbUsername + ", " + dbPassword + "<br>"
                + "服务端口:" + serverPort;
    }
}

在上面的代码中,我们使用了@Value注解来注入配置文件中的值。通过${}的方式,我们可以指定要读取的环境变量的名称,然后将其注入到对应的变量中。在MyController中,我们通过@GetMapping注解来创建一个简单的API接口,在访问根路径时,返回读取到的环境变量的值。

编译打包

在完成代码的编写后,我们可以使用Maven或Gradle等构建工具来编译和打包项目。在命令行中,我们可以使用以下命令来编译和打包项目:

mvn clean package