2

我有一个需要迭代的 Class 类型列表,对于该列表中的每种类型,Spring 需要自动找到要初始化的正确类型的对象。

例如:我有一个ClassA和ClassB。例如,当有用户类型时,需要使用某些参数(在 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>

亲切的问候,

梅林

4

1 回答 1

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);
}
于 2013-03-12T14:30:58.737 回答