我正在尝试注入一个Class列表。我想要一个类列表,而不是对象。
我的班级看起来像这样:
public class CodeServiceImpl{
private List<Class<?>> codeList;
// getter and setter
我的弹簧配置文件(我没有使用注释,但是xml)是
<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>
但是没有填充列表codeList。它最终成为一个空对象。谢谢你的帮助。
答案 0 :(得分:1)
实际上它的工作原理是:
<bean class="com.my.proj.Foo">
<constructor-arg value="java.lang.String, org.springframework.util.StringUtils, byte[]"/>
</bean>
其中Foo
是:
public class Foo {
private final List<Class<?>> codeList;
public Foo(Class<?>... codeList) {
this.codeList = Arrays.asList(codeList);
}
}
ConversionService
执行将逗号分隔的字符串转换为Class<?>[]
并尝试使用BeanClassLoader