我有一个需要迭代的类类型列表,对于该列表中的每个类型,Spring需要自动找到要初始化的正确类型的对象。
例如:我有ClassA和ClassB。例如,当存在类型User时,需要使用某些参数(在context.xml中定义)初始化ClassA。例如,当存在一种类型的Message时,它还应该从类型ClassA创建一个对象,但是具有不同的参数,这些参数在context.xml中再次定义。
我该怎么做呢?我已经看过spring的控制功能的反转,但似乎无法找到适合我特定用途的正确实现
一个想法是我为各种可能的类型制作了一个bean,例如
<bean id="classAconfig" class="ClassA">
<property name="type" value="User.class"/>
<property name="fields">
<list>
<value>id</value><value>email</value>
</list>
</property>
<property name="map">
<map>
<entry key="id" value="1"/><entry key="login" value="1"/><entry key="email" value="1"/>
</map>
</property>
</bean>
亲切的问候,
Merlijn
答案 0 :(得分:0)
好吧,我找到了。只需在上下文xml中定义一些bean,如上所述。但是在ClassA中,我扩展了InitializingBean并覆盖了afterPropertiesSet方法。在那个方法中,我在我的服务中注册了ClassA。
public class ClassA extends InitializingBean
@Override
public void afterPropertiesSet() throws Exception {
service.registerClass(this);
}
然后在我的服务中:
public void registerClass(@Nonnull Class clazz) {
classes.put(clazz.getType(), clazz);
}