作者:mobiledu2502889153 | 来源:互联网 | 2024-12-26 19:35
本文详细介绍了如何在SpringBoot应用中通过@PropertySource注解读取非默认配置文件,包括配置文件的创建、映射类的设计以及确保Spring容器能够正确加载这些配置的方法。
在开发过程中,我们经常需要将某些配置项分离到独立的文件中以便更好地管理和维护。本文将深入探讨如何在 Spring Boot 中使用 @PropertySource
注解来读取非默认配置文件。
一、概述
通常情况下,Spring Boot 应用的配置会放在默认的 application.properties
或 application.yml
文件中。然而,为了更灵活地管理配置,有时我们需要将特定配置项放在单独的文件中。这不仅提高了代码的可读性和可维护性,还便于在不同环境中进行配置管理。
二、创建自定义配置文件
假设我们有一个名为 info.properties
的自定义配置文件,其内容如下:
test.name=hello
该文件可以放置在 src/main/resources
目录下的任意位置,例如新建一个 properties
文件夹。
三、配置文件映射类
为了将配置文件中的属性映射到 Java 类中,我们可以创建一个配置类并使用 @ConfigurationProperties
注解。以下是一个示例:
@ConfigurationProperties(prefix = "test")
public class InfoConfig {
private String name;
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
关于更多配置文件读取方式,请参考:Spring Boot 配置文件读取
四、使 Spring 找到自定义配置文件
为了让 Spring Boot 能够识别并加载自定义配置文件,我们需要使用 @PropertySource
注解。具体代码如下:
@PropertySource(value = "classpath:properties/info.properties", ignoreResourceNotFound = true)
@ConfigurationProperties(prefix = "test")
public class InfoConfig {
// 类定义同上
}
注意 value
属性的值应为配置文件的路径。
五、让 Spring 感知到配置类
为了让 Spring 容器能够扫描并注入此配置类,我们需要添加 @Configuration
注解。完整的代码如下:
@Configuration
@PropertySource(value = "classpath:properties/info.properties", ignoreResourceNotFound = true)
@ConfigurationProperties(prefix = "test")
public class InfoConfig {
private String name;
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
请注意,在这种情况下,@EnableConfigurationProperties
和 @ConfigurationPropertiesScan
注解是无效的,必须使用 @Configuration
注解。
文章最后提供了完整的源码,欢迎访问 GitHub 仓库:springboot-learn 并 star 支持。