Spring синтаксис для установки объекта Class? - PullRequest
29 голосов
/ 21 октября 2009

Есть ли способ установить свойство весной в не экземпляр класса, а сам объект класса? т.е.

Вместо

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

дает вам экземпляр "Foo", что-то вроде:

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

редактирование: Наилучшее (работающее) решение на данный момент - используйте обычное создание экземпляра и получите класс в установщике. С точки зрения решений, я думаю, что мы бы описали это как «обман»:

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


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

редактирование: Метод Дцаза также работает.

редактировать: Метод Педромарса тоже работает.

Ответы [ 4 ]

38 голосов
/ 21 октября 2009
<bean>
   <property name="x">
      <value type="java.lang.Class">a.b.c.Foo</value>
   </property>
 </bean>

Это должно сработать.

11 голосов
/ 21 октября 2009

Вы, безусловно, можете использовать статический метод фабрики Class.forName (), если нет более элегантного синтаксиса (и я не верю, что он есть):

<property name="x">
   <bean class="java.lang.Class" factory-method="forName">
      <constructor-arg value="a.b.c.Foo"/>
   </bean>
</property>
0 голосов
/ 21 октября 2009

Будет ли работать? Это должен быть экземпляр объекта Class ...

0 голосов
/ 21 октября 2009

Нет. С помощью тега bean вы указываете Spring, как создать экземпляр класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...