Spring : 使用 @Resource 將屬性檔映射成一個 Map
- @Resource by name or id inject spring bean
- 直接將指定屬性檔(如: config.properties)轉成 Map 來使用。
applicationContex.xml 屬性檔範例:
- applicationContex.xml: 這邊以 classpath 路徑指名要匯入的屬性檔案(config.properties)
<bean id="configProperties" lazy-init="false"
class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="location">
<value>classpath:config.properties</value>
</property>
</bean>
Java 端取出屬性檔範例:
- java code 端取出 properties Map 的使用範例
- @Resource 是用來指名要 contex.xml 中哪一個 bean。在有多個 *.properties 設定且 map to 不同名稱時使用。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@Resource(name="configProperties")
private Map<String, String> configProperties;
public Map<String, String> getConfigProperties() {
return configProperties;
}
public void setConfigProperties(Map<String, String> configProperties) {
this.configProperties = configProperties;
}
@Override
public void printProperties(){
for (String string : getConfigProperties().keySet()) {
System.out.println(string + " : " + getConfigProperties().get(string));
}
}
其他 Properties Location xml 設定的其他方式
參考:
- PathMatchingResourcePatternResolver
- ClassPathResource
- FileSystemResource