복붙노트

[SPRING] Class 객체를 설정하기위한 Spring 구문?

SPRING

Class 객체를 설정하기위한 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의 방법도 잘 작동합니다.

편집하다: pedromarce의 방법도 잘 작동합니다.

해결법

  1. ==============================

    1.

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

    그게 효과가있다.

  2. ==============================

    2.우아한 구문이 없다면 확실히 정적 팩토리 메서드 Class.forName ()을 사용할 수 있습니다. (나는 거기 있다고 믿지 않습니다) :

    우아한 구문이 없다면 확실히 정적 팩토리 메서드 Class.forName ()을 사용할 수 있습니다. (나는 거기 있다고 믿지 않습니다) :

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

    3.아니요. 빈 태그를 사용하여 클래스를 인스턴스화하는 방법을 Spring에 지시합니다.

    아니요. 빈 태그를 사용하여 클래스를 인스턴스화하는 방법을 Spring에 지시합니다.

  4. ==============================

    4. 작동합니까? 그것은 Class 객체의 인스턴스 여야합니다 ...

    작동합니까? 그것은 Class 객체의 인스턴스 여야합니다 ...

  5. from https://stackoverflow.com/questions/1601015/spring-syntax-for-setting-a-class-object by cc-by-sa and MIT license