Java 在Spring中将属性文件中的所有键和值作为映射注入

Java 在Spring中将属性文件中的所有键和值作为映射注入,java,spring,Java,Spring,有人能提供一些想法,从属性文件中注入所有动态键和值,并使用Setter注入和集合将其作为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=p

有人能提供一些想法,从属性文件中注入所有动态键和值,并使用Setter注入和集合将其作为
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定义,以将所有键和值注入映射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;
    }
}
公共类DBConstants{
私有映射常数;
公共映射getDbConstants(){
返回dbConstants;
}
公共void setDbConstants(映射dbConstants){
this.dbConstants=dbConstants;
}
}

您可以使用属性文件创建PropertiesFactoryBean,然后将@Resource annotation注入其中,将其用作映射

@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;
@Resource(name=“myProperties”)
私人物业;

您可以使用属性文件创建PropertiesFactoryBean,然后将@Resource annotation注入其中,将其用作映射

@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;
@Resource(name=“myProperties”)
私人物业;

您可以使用
@Value

属性文件:

dbConstants={key1:'value1',key2:'value2'}
Java代码:

@Value("#{${dbConstants}}")
private Map<String,String> dbConstants;
@Value(“#{${dbConstants}}”)
私有映射常数;

您可以使用
@Value

属性文件:

dbConstants={key1:'value1',key2:'value2'}
Java代码:

@Value("#{${dbConstants}}")
private Map<String,String> dbConstants;
@Value(“#{${dbConstants}}”)
私有映射常数;

您使用的是Spring Boot还是常规Spring Framework?仅使用Spring Framework。您使用的是Spring Boot还是常规Spring Framework?仅使用Spring Framework。它对我不起作用。Spring将此属性“视”为字符串,无法强制转换为映射。您使用的是哪个版本的Spring?你试过新版本吗?你指的是什么新版本?从哪个版本spring支持它?我得到了这个问题。。。通过这样的使用解决了这个问题。。这对我不起作用。Spring将此属性“视”为字符串,无法强制转换为映射。您使用的是哪个版本的Spring?你试过新版本吗?你指的是什么新版本?从哪个版本spring支持它?我得到了这个问题。。。通过这样的使用解决了这个问题@Alex_Java:您可以使用
属性来代替
映射
,无论是在上面的示例中还是在一般情况下。我无法将资源定义为
映射
,必须按照上面的建议使用
属性
。@Alex_Java:您可以使用
属性
,而不是
映射
,在上面的例子和一般情况下,我无法将资源定义为
映射
,必须使用上面建议的
属性