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



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

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

// 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包含映射 dbConstant,需要为其注入所有键和值。

请提供 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;
    }
}

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

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

用法:

@Resource(name = "myProperties")
private Map<String, String> myProperties;

您可以使用@Value .

属性文件:

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

爪哇代码:

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

你必须给空格它像

hash.key = {indoor: 'reading', outdoor: 'fishing'}

阅读我提到的地图。

@Value("#{${hash.key}}")
private Map<String, String> hobbies;

最新更新