我有一个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将永远改变。我想知道是否有一种弹簧方式来获取整个动物属性,然后通过让我们说动物。类型来访问子属性。
答案 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.