代码之家  ›  专栏  ›  技术社区  ›  Steve B.

设置类对象的Spring语法?

  •  29
  • Steve B.  · 技术社区  · 15 年前

    是否有一种方法可以在Spring中将属性设置为,而不是类的实例,而是类对象本身?即

    而不是

    <bean>
       <property name="prototype" class="a.b.c.Foo">...
    

    给你一个“foo”的例子,比如:

    <bean>
      <property name="prototype" class="java.lang.Class" value="a.b.c.Foo.class"...
    

    编辑: 迄今为止最好的(有效的)解决方案-使用普通的实例化并在setter中派生类。就解决方案而言,我认为我们会将其描述为“欺骗”:

    <bean class="Bar">
       <property name="prototype" class="a.b.c.Foo">...
    
    
    public class Bar{
            public void setPrototype(Object o){
                    this.prototypeClass=o.getClass();
    

    编辑: DTSAzza的方法也有效。

    编辑: 佩德罗马尔斯的方法也有效。

    4 回复  |  直到 15 年前
        1
  •  38
  •   pedromarce    15 年前
    <bean>
       <property name="x">
          <value type="java.lang.Class">a.b.c.Foo</value>
       </property>
     </bean>
    

    那应该管用。

        2
  •  11
  •   Andrzej Doyle    15 年前

    你当然可以用 static factory method class.forname(),如果没有更优雅的语法(我不相信有):

    <property name="x">
       <bean class="java.lang.Class" factory-method="forName">
          <constructor-arg value="a.b.c.Foo"/>
       </bean>
    </property>
    
        3
  •  0
  •   Kees de Kooter chotai.mit    15 年前

    不,使用bean标记,您将指导spring如何实例化类。

        4
  •  0
  •   extraneon    15 年前

    <property name=“x”class=“a.b.c.foo.class”>是否有效?应该是类对象的实例…