代码之家  ›  专栏  ›  技术社区  ›  harschware

创建类型为set<class<?> >

  •  2
  • harschware  · 技术社区  · 16 年前

    如何创建类bean?

    我找到了一种使用getClass()的方法,但它需要一个实例,并且不能通过工厂方法使用,因为它不是静态的。它还需要为此目的创建一个外部be an:

    <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>
    
    2 回复  |  直到 15 年前
        1
  •  5
  •   skaffman    16 年前

    如果你真的想做你描述的事情,那么你可以这样做:

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

    但是正如@chssply76所说,如果您想将它注入到另一个bean中,只需要注入类名,Spring会自动将其转换为类实例。

        2
  •  4
  •   ChssPly76    16 年前

    为什么会这样?你能提供一个实际需要的例子吗?

    如果您只需要将其作为依赖项(例如,其他一些bean具有class类型的属性),那么Spring的内置class editor属性编辑器会将常规字符串转换为具有该名称的类实例:

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

    以上结果将导致 setSomeClass(Class clazz) 正在对其属性为的bean调用setter。