Spring Boot 讀取配置的多種方式詳解
前言
在Spring Boot應用開發過程中,配置管理是至關重要的一環。合理地讀取和使用配置信息,不僅可以提高應用的靈活性和可維護性,還能滿足不同環境下的差異化需求。
Spring Boot為開發者提供了多種讀取配置的方式,本文將對這些方式進行詳細介紹,并通過實際示例展示其用法。
通過@Value注解讀取配置
@Value注解是Spring Boot中最常用的讀取配置方式之一,它可以將配置文件中的值注入到對應的變量中。
public class AppConfig {
@Value("${app.name}")
private String appName;
@Value("${app.version}")
private String appVersion;
// 省略getter和setter方法
}默認值設置
當配置文件中某個配置項不存在時,為了避免出現空指針異常,可以為@Value注解設置默認值:
@Value("${app.description:This is a default description}")
private String appDescription;其他支持
@Value支持通過特定格式注入集合(List、Set)和映射(Map)類型
# 配置字符串列表
app.servers=server1,server2,server3
# JSON格式
app.headers='{"Content-Type":"application/json","Authorization":"Bearer token"}'@Component
public class CollectionConfig {
@Value("#{'${app.servers}'.split(',')}")
private List<String> servers;
@Value("#{${app.headers}}")
private Map<String, String> headers;
// 省略getter和setter
}使用@ConfigurationProperties注解讀取配置
@ConfigurationProperties注解適合批量讀取配置文件中的屬性,它可以將配置文件中的屬性與一個Java類的屬性進行綁定。
@Component
@ConfigurationProperties(prefix = "app")
public class AppProperties {
private String name;
private String version;
private String description;
// 省略getter和setter方法
}從Environment對象讀取配置
Environment接口提供了訪問應用配置屬性的方法,通過注入Environment對象,可以直接獲取配置信息。
@Component
public class EnvironmentConfig {
private final Environment environment;
@Autowired
public EnvironmentConfig(Environment environment) {
this.environment = environment;
}
public String getAppName() {
return environment.getProperty("app.name");
}
}加載外部配置文件
在配置類上使用@PropertySource注解可以指定要加載的外部配置文件。例如:
@Component
@PropertySource("classpath:custom.properties")
public class CustomConfig {
// 可以通過@Value或@ConfigurationProperties讀取custom.properties中的配置
}總結
@Value用于注入單個配置值到字段或方法參數中@ConfigurationProperties將配置文件中的屬性批量綁定到Java Bean中Environment提供訪問應用程序環境的統一接口@PropertySource加載自定義配置文件到Spring環境中
































