开发者

Spring syntax for setting a Class object?

Is there a way to set a property in spring to, not an instance of a class, but the class object itself? i.e.

Rather than

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

giving yo开发者_Go百科u an instance of "Foo", something like:

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

edit: best (working) solution so far - use the normal instantiation and derive the class in the setter. In terms of solutions I think this we'd describe this as "cheating":

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


public class Bar{
        public void setPrototype(Object o){
                this.prototypeClass=o.getClass();

edit: dtsazza's method works as well.

edit: pedromarce's method works as well.


<bean>
   <property name="x">
      <value type="java.lang.Class">a.b.c.Foo</value>
   </property>
 </bean>

That should work.


You could certainly use the static factory method Class.forName(), if there's no more elegant syntax (and I don't believe there is):

<property name="x">
   <bean class="java.lang.Class" factory-method="forName">
      <constructor-arg value="a.b.c.Foo"/>
   </bean>
</property>


No. With a bean tag you instruct Spring on how to instantiate a class.


Would <property name="x" class="a.b.c.Foo.class"> work? That should be an instance of a Class object...

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜