基于弹簧类型的自动对象初始化

时间:2013-03-06 07:52:55

标签: java spring constructor javabeans

我有一个需要迭代的类类型列表,对于该列表中的每个类型,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

1 个答案:

答案 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);
}