将所有键和值从属性文件中注入Spring中的Map

时间:2017-02-11 18:33:22

标签: java spring

有人可以提供一些想法,从属性文件中注入所有动态键和值,并使用Setter Injection with Collection将其作为Map传递给DBConstants类。

密钥事先不知道,可能会有所不同。

// Example Property File that stores all db related details
// db.properties

db.username.admin=root
db.password.admin=password12
db.username.user=admin
db.password.user=password13

DBConstants包含需要注入所有键和值的映射dbConstants。

请提供bean定义以将所有键和值注入Map dbConstants。

public class DBConstants {

    private Map<String,String> dbConstants;

    public Map<String, String> getDbConstants() {
        return dbConstants;
    }

    public void setDbConstants(Map<String, String> dbConstants) {
        this.dbConstants = dbConstants;
    }
}

2 个答案:

答案 0 :(得分:3)

您可以使用属性文件创建PropertiesFactoryBean,然后使用@Resource注释将其注入,以便将其用作地图。

#include <iostream>
using namespace std;

int main ()
{
  cout << "Hello World!";
}

用法:

@Bean(name = "myProperties")
public static PropertiesFactoryBean mapper() {
    PropertiesFactoryBean bean = new PropertiesFactoryBean();
    bean.setLocation(new ClassPathResource("prop_file_name.properties"));
    return bean;
}

答案 1 :(得分:1)

您可以使用@Value

属性文件:

dbConstants={key1:'value1',key2:'value2'}

Java代码:

@Value("#{${dbConstants}}")
private Map<String,String> dbConstants;