2009-10-06 94 views
2

如何創建類型爲Class的bean?創建類型爲Set的組的豆類<Class<?>>

我找到了一種使用getClass()方法,但需要一個實例,並且不能通過工廠方法使用,因爲它不是靜態的。它還需要一個外部的bean來爲這個目的很明確創建:

<bean id="foo" class="Foo" /> 
<bean id="fooClass" factory-bean="foo" factory-method="getClass" /> 

這不是那麼糟糕,如果Foo類易於施工,但如果在構造所需的參數?

然後我需要創建一個類的集合,通過屬性連接到另一個bean。我會創建一套如:

<util:set id="classSet"> 
    <ref local="fooClass"/> 
</util:set> 

回答

5

如果你真的想要做你的描述,那麼你可以做這樣的:

<bean id="myClass" class="java.lang.Class" factory-method="forName"> 
    <constructor-arg value="com.MyClass"/> 
</bean> 

但正如@ ChssPly76說,如果你想將其注入到另一個bean中,你只需要注入類名稱,Spring會自動將它轉換爲您的類實例。

+0

我不想創建Class bean,但是因爲我需要一組Class bean,並且無法找到如何使用util:set的內置類編輯器。所以,我認爲這提供了迄今爲止最好的方法。 – harschware 2009-10-07 15:45:07

4

你爲什麼?你能提供一個實際需要的例子嗎?

如果你只需要這個作爲一個依賴(例如,一些其他bean的Class類型的屬性),Spring的內置類編輯屬性編輯器將一個普通字符串轉換成Class實例與該名稱爲您提供:

<property name="someClass" value="java.lang.String"/> 

以上將導致setSomeClass(Class clazz) setter被調用的bean的屬性是。

+0

我不確定,但是你的意思是? – Chaos 2013-06-20 00:24:52

相關問題