Java 在Spring中将属性文件中的所有键和值作为映射注入
有人能提供一些想法,从属性文件中注入所有动态键和值,并使用Setter注入和集合将其作为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
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:您可以使用属性
,而不是映射
,在上面的例子和一般情况下,我无法将资源定义为映射
,必须使用上面建议的属性
。