如何加载属性集,然后使用spring框架访问它

时间:2014-04-02 14:48:15

标签: spring spring-mvc

我有一个spring web应用程序。让我们说它正在管理一个动物园。 在我的属性文件中,我正在写下动物的数量以及每种动物的类型和名称如下:

animal.number = 2
animal.1.type= tall
animal.1.name= Simba
animal.2.type= small
animal.2.name= Pumba

现在我想使用spring方式在我的应用程序中使用此属性。在我的config.xml中,我可以编写如下内容。

<bean id="animal" class="com.zoo.animalsManaging">
    <property name="animalNumber" value="${animal.number}" />
    <property name="animal1Name" value="${animal.1.name}" />
    <property name="animal1Type" value="${ animal.1.type}" />
    <property name="animal2Name" value="${animal.2.name}" />
    <property name="animal2Type" value="${ animal.2.type}" />
</bean>

问题是animalNumber将永远改变。我想知道是否有一种弹簧方式来获取整个动物属性,然后通过让我们说动物。类型来访问子属性。

1 个答案:

答案 0 :(得分:2)

按照引导here,您可以使用util:properties

动物属性

animal.1.type= tall
animal.1.name= Simba
animal.2.type= small
animal.2.name= Pumba
animal.number= 2

application.xml配置

<context:property-placeholder location="classpath:animal.properties"/>

    <bean name="zoo" class="com.stack.Zoo" init-method="init">
      <property name="animalProperties">
         <!-- not sure if location has to be customizable here; set it directly if needed -->
        <util:properties location="${classpath:animal.properties}"/>
      </property>
      <property name="numberOfAnimals" value="${animal.number}" />
    </bean>

Zoo是来自Properties的动物类保持列表。

public class Zoo {
    Properties animalProperties;
    private Integer numberOfAnimals;
    List<Animal> animals;

    public void init() {
        animals = new ArrayList<Animal>();
        if (numberOfAnimals > 0) {
            StringBuffer key = new StringBuffer();
            for (int i = 1; i <= numberOfAnimals; i++) {
                key.setLength(0);
                key.append("animal.").append(i).append(".type");
                String type = this.animalProperties.getProperty(key.toString());
                key.setLength(0);
                key.append("animal.").append(i).append(".name");
                String name = this.animalProperties.getProperty(key.toString());
                animals.add(new Animal(name,type));
                System.out.println("Animals Added");
            }
        }


    }
// Setter and getter Methods
}

在Post Construct中,我们正在阅读属性并创建动物实例。

numberOfAnimals  value injected by Spring.