2017-02-11 8 views
1

プロパティファイルからすべての動的キーと値を注入して、Setter Injection with Collectionを使ってMapDBConstantsクラスに渡すことができますか?プロパティファイルからすべてのキーと値をSpringのMapとして注入する

鍵はあらかじめわかっておらず、さまざまです。

// 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が含まれています。

Map dbConstantsにすべてのキーと値を注入するBean定義を提供してください。

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

をあなたは春ブーツや普通の春のフレームワークを使用していますか? –

+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

関連する問題