繁体   English   中英

在Spring XML中使用任意数量的参数调用Java构造函数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM