【发布时间】:2017-01-26 17:12:43
【问题描述】:
我通读了 externalized configuration 的 Spring Boot 文档,发现它会自动加载 src/main/resources/application.properties 文件,然后可以使用注释将其连接到 bean 属性。
但是我想要一个通用的PropertyHelper 类,它可以用来构建java.util.Properties 与application.properties 中的属性。这个可以吗?
我们目前正在手动实现这一点,如下所示:
public class PropertyHelper {
private static Properties loadProperties() {
try {
String propsName = "application.properties";
InputStream propsStream = PropertyHelper.class
.getClassLoader().getResourceAsStream(propsName);
if (propsStream == null) {
throw new IOException("Could not read config properties");
}
Properties props = new Properties();
props.load(propsStream);
【问题讨论】:
-
在
application.properties前加一个斜线 -
或者你可以自动装配环境,它是一个包含文件中所有值的属性类型 bean
-
使用
Environment,您可以获取属性,但它没有所有属性的列表。只能使用env.getProperty("propertyName")获取属性 -
对于这可以做到吗?,你的实验结果是什么?
-
但是,
Environment很可能是ConfigurableEnvironment,它允许您迭代属性源,并且您可以迭代任何PropertySource的属性是EnumerablePropertySource。 --- 使用Environment的好处是您可以获得对 Profiles 和 YAML 等功能的支持。但问题是:为什么需要迭代它们?您不知道您感兴趣的房产名称吗?
标签: spring-boot