返回

快速上手SpringBoot:一文剖析六大配置读取利器

后端

SpringBoot 配置管理的全面指南

SpringBoot 是一款广受欢迎的 Java 框架,因其简化配置管理而闻名。本文将深入探讨 SpringBoot 提供的六种配置读取方式,帮助开发人员高效地管理应用程序配置。

1. application.properties/application.yml

application.properties 和 application.yml 文件是 SpringBoot 最常用的配置方式。这些文件位于 resources 目录中,可轻松定义各种应用程序属性。以下是这些文件的一个示例:

#application.properties
server.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=123456
#application.yml
server:
  port: 8080
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/test
    username: root
    password: 123456

2. 环境变量

SpringBoot 可以从环境变量中读取配置。只需将配置设置为环境变量即可。

# 设置环境变量
export SERVER_PORT=8080
export SPRING_DATASOURCE_URL=jdbc:mysql://localhost:3306/test
export SPRING_DATASOURCE_USERNAME=root
export SPRING_DATASOURCE_PASSWORD=123456

3. 命令行参数

SpringBoot 支持从命令行参数中读取配置。在启动应用程序时使用 -- 符号指定配置属性即可。

java -jar spring-boot-app.jar --server.port=8080 --spring.datasource.url=jdbc:mysql://localhost:3306/test --spring.datasource.username=root --spring.datasource.password=123456

4. 系统属性

SpringBoot 可以从系统属性中读取配置。使用 System.setProperty() 方法设置系统属性即可。

System.setProperty("server.port", "8080");
System.setProperty("spring.datasource.url", "jdbc:mysql://localhost:3306/test");
System.setProperty("spring.datasource.username", "root");
System.setProperty("spring.datasource.password", "123456");

5. Profile

SpringBoot 支持使用 Profile 管理不同的配置环境。在 application.properties 或 application.yml 文件中指定 Profile,即可在不同环境中使用不同的配置。

#application.properties
spring.profiles.active=dev

server.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=123456

#application-dev.properties
spring.datasource.url=jdbc:mysql://localhost:3306/test_dev
spring.datasource.username=root_dev
spring.datasource.password=123456_dev

6. 自定义配置类

SpringBoot 支持创建自定义配置类来读取配置。使用 @Configuration 注解标记一个 Java 类即可。

@Configuration
public class MyConfig {

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

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

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

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

    // 省略getter和setter方法
}

总结

SpringBoot 提供了六种读取配置信息的方式,开发者可以根据自己的需要选择合适的方式。灵活组合和应用这些方法可以满足不同的需求。SpringBoot 的配置系统非常强大,可以帮助开发者轻松管理配置信息,提升开发效率。

常见问题解答

1. SpringBoot 配置方式的优先级是什么?

配置方式的优先级从最高到最低为:自定义配置类 > Profile > 系统属性 > 命令行参数 > 环境变量 > application.properties/application.yml。

2. 如何从 JNDI 读取配置?

使用 @JndiPropertySource 注解即可从 JNDI 读取配置。

3. 如何从 Consul 读取配置?

使用 spring-cloud-consul-config 依赖项即可从 Consul 读取配置。

4. 如何管理配置变更?

使用 Spring Cloud Config Server 即可管理配置变更。

5. 如何使用 SpringBoot 配置扩展?

可以使用 @ConfigurationProperties 注解和 @EnableConfigurationProperties 注解创建自定义配置扩展。