您的位置:

Springboot自定义配置文件完全指南

一、自定义配置文件介绍

Spring Boot 是一个基于 Spring 的框架,通过简化配置,使得快速构建单独的、生产级别的 Spring 应用程序变得更为容易,而自定义配置文件是 Spring Boot 提供的便捷方式之一。Spring Boot 的自定义配置文件允许我们在不重新编译代码的情况下,修改 Spring Boot 应用程序的某些行为,这样我们就可以灵活的管理和配置应用程序。Spring Boot 提供了多种方式来管理自定义配置文件,包括 YAML,Properties,Environment,CommandLine 等。 下面将分别进行介绍。

二、YAML自定义配置文件

YAML是现代化的可读性强的数据序列化格式,过去我们通常使用 Properties 类型的文件,但是由于一些限制,如不支持多维结构等,YAML 逐渐地取代了 Properties 文件。通常来说,YAML 文件以 .yml 或者 .yaml 结尾。我们可以在 Spring Boot 应用程序的 classpath 下创建一个 application.yml 或者 bootstrap.yml 文件,并添加一些属性来进行自定义配置。 让我们来看一下如何在 application.yml 文件中添加属性:


server:
  port: 8080
spring:
  datasource:
    url: jdbc:mysql://localhost/test
    username: root
    password: root
    driver-class-name: com.mysql.jdbc.Driver

通过上述配置,我们可以设置服务器端口号为 8080,并配置了数据库连接信息。需要注意的是,在 YAML 文件中属性之间的缩进必须要使用空格进行缩进。

三、Properties自定义配置文件

与 YAML 一样,Properties 文件也是 Spring Boot 提供的自定义配置文件的一种方式,通过设置一些键值对来进行定制化配置。Properties 文件通常以 .properties 结尾,并且以键值对对的形式来保存各种配置信息。例如,我们可以在 application.properties 文件中设置服务器端口号和数据库连接:


server.port = 8080
spring.datasource.url = jdbc:mysql://localhost/test
spring.datasource.username = root
spring.datasource.password = root
spring.datasource.driver-class-name = com.mysql.jdbc.Driver

需要注意的是,在 Properties 文件中,键和值之间使用 = 进行分隔,且属性与值之间不需要引号括起来。

四、Environment自定义配置文件

Spring Boot 还支持使用环境变量来进行自定义配置文件的管理。我们可以在启动 Spring Boot 应用程序时,通过设置环境变量来传递自定义配置信息。Spring Boot 将覆盖运行时环境变量中的属性。例如,在 Linux 下,我们可以通过 export 命令设置一个变量 MY_DB_URL,并将其值设置成我们需要连接的数据库的 URL:


export MY_DB_URL=jdbc:mysql://localhost/test

然后,我们可以在启动 Spring Boot 应用程序时,将其作为环境变量来传递:


java -jar myProject.jar --spring.datasource.url=${MY_DB_URL}

需要注意的是,我们可以使用 $ 来引用环境变量中的值,但是需要使用 {} 进行包装。

五、CommandLine自定义配置文件

CommandLine 是 Spring Boot 的另一种方式,可用于在应用程序启动时传递自定义配置信息。CommandLine 可以与之前介绍的自定义配置文件类型一起使用,以便更灵活地管理应用程序配置。 CommandLine 的参数值可以通过 args[] 以及 ApplicationArguments 来进行获取。


@SpringBootApplication
public class MyApplication implements CommandLineRunner {
 
    public static void main(String[] args) {
        SpringApplication.run(MyApplication .class, args);
    }
 
    @Override
    public void run(String... args) throws Exception {
        System.out.println("Custom configuration: " + args[0]);
    }
}

在上面的示例中,我们定义了一个名为 run() 的方法,通过 Override 注解来覆盖 CommandLineRunner 接口中的 run() 方法。该方法通过 args[] 取得传递给应用程序的参数值。

六、总结

通过以上的介绍,我们知道了Spring Boot允许我们通过不同的方式来管理自定义配置文件,包括 YAML,Properties,Environment ,CommandLine 等。每种类型的自定义配置文件都可以用于设置应用程序的不同属性,在项目开发中,配置文件的灵活使用,确实能够为我们节省不少宝贵的时间和精力。