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

标签 java spring

假设有一个类,其构造函数具有任意数量的参数,如下所示:

public ClassA(URI ... uri){
    //contruct object
}

传递到 ClassA 构造函数中的 URI 对象的数量可能会根据配置文件中定义的值的数量而变化(可以是一对多的 URI)。

我应该如何在 Spring XML 中定义 ClassA bean?

最佳答案

使用FactoryBean接口(interface):

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”属性作为字符串注入(inject),然后进行转换。或者 Hook 您自己的 URI 转换器。

关于java - 在 Spring XML 中使用任意数量的参数调用 Java 构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37825876/

相关文章:

java - 如何在Spring的应用程序上下文中添加http session 管理标签?

java - 使用自定义外部表单和 Spring Security 进行 CAS 身份验证

java - 如何将解决方案返回定义为 boolean 值?

java - 如何更改 1 个组件的 jtooltip 计时器

java - 将代码设计为以不同方式处理空集合和 null 值是好事还是坏事?

java - 如何使用 RabbitTemplate 设置每条消息的 TTL?

java - spring 3、hibernate、dbcp 和 derby 连接问题

java - Spring Batch StoredProcedureItemReader 仅使用输出参数读取 StoredProc(无输入参数)

java - Blackberry:如何在应用程序中嵌入 YouTube 视频

java - 异常 : com. mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:列 'dog_id' 不能为空