【发布时间】:2016-04-11 16:42:59
【问题描述】:
我正在尝试将所有 key/value 对加载到我的属性文件中。
一种方法是我手动使用@Value 加载所有属性,但为此我应该知道所有键。
我不能这样做,因为将来可能会更改属性文件以包含更多 key/value 对,我可能需要再次修改 code 以适应它们。
第二种方法是我应该了解如何加载属性文件并对其进行迭代以在不知道密钥的情况下加载所有 key/value 对。
假设我有以下属性文件sample.properties
property_set.name="Database MySQL"
db.name=
db.url=
db.user=
db.passwd=
property_set.name="Database Oracle"
db.name=
db.url=
db.user=
db.passwd=
这就是我想要做的事情
@Configuration
@PropertySource(value="classpath:sample.properties")
public class AppConfig {
@Autowired
Environment env;
@Bean
public void loadConfig(){
//Can I some how iterate over the loaded sampe.properties and load all
//key/value pair in Map<String,Map<String, String>>
// say Map<"Database MySQL", Map<key,vale>>
// I cannot get individual properties like env.getProperty("key");
// since I may not know all the keys
}
}
【问题讨论】:
-
您当前的属性文件将加载,但只有最后一个属性会在其中...正如您所说,这是一个键/值的东西,并且键在您的情况下必须是唯一的。 t 独一无二的。
-
@M.Deinum
property_set本身就是一个键,下面有一组键。我不确定它会如何影响我的实施。 -
不,这不是属性文件的工作方式。 db.name 将覆盖 db.name。不管前面说什么。
-
你是对的,如果我为每组设置唯一的键怎么样。说
db.name.ms,db.name.or。我想要的只是加载它们而不用担心键。
标签: java spring properties spring-boot