2013-03-06 97 views
2

我有一個需要迭代的類類型列表,並且對於列表中的每個類型,Spring需要自動查找要初始化的正確類型的對象。基於彈簧類型的自動對象初始化

例如:我有一個ClassA和ClassB。例如,當存在一個User類型時,需要使用某些參數(在context.xml中定義)來初始化ClassA。例如,當存在一種消息類型時,它也應該創建一個類型爲ClassA但具有不同參數的對象,這些參數在context.xml中再次定義。

我該怎麼做呢?我看過的春天的控制功能的反轉,但似乎無法找到正確的執行了我的特定目的

一個想法是,我做一個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

嗯,我發現它。只需要像上面描述的那樣在上下文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); 
}