![](/img/trans.png)
[英]Java: Invoke a method with an variable length argument lists with an ArrayList with arbitrary length
[英]Invoke Java Constructor with Arbitrary number of argument in Spring XML
假设有一个类的构造函数带有任意数量的参数,如下所示:
public ClassA(URI ... uri){
//contruct object
}
传递给ClassA的构造函数的URI对象的数量可能会有所不同,具体取决于配置文件中定义的值的数量(可以是一个或多个URI)。
如何在Spring XML中定义ClassA bean?
使用FactoryBean接口:
public interface FactoryBean<T> {
T getObject() throws Exception;
Class<T> getObjectType();
boolean isSingleton();
}
基本上定义该类型的bean。 像这样:
<bean id="classA" class="ClassAFactoryBean"/>
接着:
public class ClassAFactoryBean implements FactoryBean<ClassA> {
@Value("${uris}")
URI[] uris;
ClassA getObject() throws Exception {
return new ClassA(uris);
}
Class<T> getObjectType() {
return ClassA.class;
}
boolean isSingleton() {
return true;
}
}
如果Spring没有提供转换器,您可能必须将“ uris”属性注入为String,然后进行转换。 或挂钩您自己的URI转换器。
以下配置可以正常运行:
<beans>
<bean id="ClassA" class="ClassA">
<constructor-arg ref="uri"/>
</bean>
<bean id="uri" class="URI"/>
</beans>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.