2009-10-06 101 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

相关问题