2014-05-12 11 views
0

클래스 목록을 주입하려고합니다. 개체 목록이 아닌 클래스 목록을 원합니다.개체 자체가 아닌 개체의 클래스를 삽입하는 방법

내 클래스는 다음과 같습니다

public class CodeServiceImpl{ 

    private List<Class<?>> codeList; 

// getter and setter 

내 스프링 구성 파일

<bean id="myCodeServiceImpl" class = "net.croz.service.CodeServiceImpl"> 
     <property name="codeList"> 
      <list> 
       <ref bean="myAddress"/> 
       <ref bean="myCity"/> 
       <ref bean="myCountry"/> 
      </list> 
     </property> 
    </bean> 


    <bean id="myAddress" class="java.lang.Class" factory-method="forName"> 
      <constructor-arg value="net.croz.model.Address"/> 
     </bean> 

     <bean id="myCity" class="java.lang.Class" factory-method="forName"> 
      <constructor-arg value="net.croz.model.City"/> 
     </bean> 

     <bean id="myCountry" class="java.lang.Class" factory-method="forName"> 
      <constructor-arg value="net.croz.model.Country"/> 
     </bean> 

하지만 목록 코드 목록이 채워되지 않는 (I 주석이 있지만, XML을 사용하지 않는). 결국 null 객체가됩니다. 도와 줘서 고마워. Foo

<bean class="com.my.proj.Foo"> 
     <constructor-arg value="java.lang.String, org.springframework.util.StringUtils, byte[]"/> 
</bean> 

: 그대로

+1

1) 어떻게'CodeServiceImpl' 인스턴스를 구합니까? 2) 생성자에서'codeList'에 접근하고 있습니까? – Morfic

+0

오, 이런 나는 너무 어리 석다. 2 시간 동안 볼 수 없었던 작은 악마를 때렸습니다. 난 그냥 생성자를 사용했다. 물론 실제로 bean을 호출하지 않으면 Spring은 그것을 삽입하지 않습니다. 다시 한번 고마워요. – user3627600

답변

1

실제로 작동

public class Foo { 

    private final List<Class<?>> codeList; 

    public Foo(Class<?>... codeList) { 
     this.codeList = Arrays.asList(codeList); 
    } 

} 

ConversionServiceClass<?>[]에 쉼표로 구분 된 문자열을 변환하는 물건을 수행하고 각 클래스를 확인하려고 그 자신을 사용하여 BeanClassLoader

+0

예, 저는 클래스의 인스턴스를 만들고 그 클래스에서 실제로 bean을 호출하지 않고 선언 한 bean처럼 행동 할 것을 기대하는 바보 같은 실수를 범했습니다. – user3627600