如何创建Class类型的bean?
我找到了一种使用getClass()的方法,但这需要一个实例,并且不能通过factory-method使用,因为它不是静态的。它还需要为此明确目的创建一个无关的bean:
<bean id="foo" class="Foo" />
<bean id="fooClass" factory-bean="foo" factory-method="getClass" />
如果Foo类易于构造,这不是很糟糕,但如果构造函数需要参数怎么办?
然后我需要创建一个Set类来通过属性连接到另一个bean。我会创建如下的集:
<util:set id="classSet">
<ref local="fooClass"/>
</util:set>
答案 0 :(得分:5)
如果你真的想做你描述的事情,那么你可以这样做:
<bean id="myClass" class="java.lang.Class" factory-method="forName">
<constructor-arg value="com.MyClass"/>
</bean>
但正如@ ChssPly76所说,如果你想将它注入另一个bean,你只需要注入类名,Spring会自动将它转换为一个类实例。
答案 1 :(得分:4)
你为什么这样?你能提供一个实际需要的例子吗?
如果您只需要将它作为依赖项(例如,其他一些bean具有Class类型的属性),Spring的内置ClassEditor属性编辑器会将常规字符串转换为具有该名称的Class实例:
<property name="someClass" value="java.lang.String"/>
上面的结果会导致setSomeClass(Class clazz)
setter被调用bean的属性为。