Spring:将属性文件注入map

时间:2014-01-22 09:30:10

标签: java spring

我在下面有一个属性文件:

transition.s1=s2,s5
transition.s2=s4,s1
...................

问题:如何将这些属性注入Map<String, String>?你能提供一个例子吗?

1 个答案:

答案 0 :(得分:13)

如果是XML配置

public class StateGraph {
    public StateGraph(Map<String, String> a){ 
    ...
    }
    boolean getStateTransition(){
    ...
    }
}

当属性实现map时,您可以将其作为构造函数提供

<bean class="com.xxx.xxx.StateGraph">
    <constructor-arg>
        <util:properties location="classpath:props.properties"/> 
    </constructor-arg>
</bean>

请注意Spring将完成所有the required generic type conversions

  

如果您使用的是Java 5或Java 6,您将意识到它是   可能有强类型集合(使用泛型类型)。   也就是说,可以声明Collection类型   仅包含String元素(例如)。如果你使用Spring来   依赖项将一个强类型的Collection注入bean中,你可以   利用Spring的类型转换支持这样的   强类型Collection实例的元素将被转换   在添加到Collection之前添加到适当的类型。

如果您使用的是程序化配置,那么您必须自己在@Configuration课程中进行操作 - 请参阅Converting java.util.Properties To HashMap<string,string>