2017-02-11 20 views
1

有人可以提供一些想法,以注入屬性文件中的所有動態鍵和值,並使用Setter Injection with Collection將其作爲Map傳遞到DBConstants類。將屬性文件中的所有鍵和值注入爲Spring中的地圖

鑰匙事先不知道,可以變化。

// 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; 
    } 
} 
+1

你使用Spring啓動,或只是普通的Spring框架? –

+0

只是春天的框架。 –

回答

2

您可以使用屬性文件創建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; 
1

可以使用@Value

屬性文件:

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

Java代碼:

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

它不適合我。 Spring將此屬性視爲String,不能投射到Map。 – Denys

+0

你使用的是什麼版本的春天?你嘗試過一個更新的版本嗎? –

+0

你的意思是什麼新版本?春天支持它的版本是什麼? – Denys

相關問題