使用带有Spring变量参数的FactoryMethod创建Springbean?

使用带有Spring变量参数的FactoryMethod创建Springbean?,spring,inversion-of-control,Spring,Inversion Of Control,如何使用带有变量参数的FactoryMethod创建bean public class ConnectionFactoryClass { public static Connection composeConnection(final Property... properties) { ... } } bean.xml <bean id="Connection" class="com.example.ConnectionFactoryCla

如何使用带有变量参数的
FactoryMethod
创建bean

 public class ConnectionFactoryClass {

    public static Connection composeConnection(final Property... properties) {
       ...
    }
 }
bean.xml

  <bean id="Connection"
    class="com.example.ConnectionFactoryClass"
    factory-method="composeConnection"
    scope="singleton">
    <constructor-arg ref="Driver"/>
    <constructor-arg ref="Pool"/>
  </bean>

春天给了我一个错误的说法

org.springframework.beans.factory.BeanCreationException:创建名为“/beans.xml”的bean时出错:未找到匹配的工厂方法:工厂方法“composeConnection”

请尝试以下操作:

<bean id="Connection"
    class="com.example.ConnectionFactoryClass"
    factory-method="composeConnection"
    scope="singleton">
    <constructor-arg> 
        <array>
        <bean ref="Driver" />
            <bean ref="Pool" />
        </array>
    </constructor-arg>
  </bean>

我认为您遇到了一个问题,因为JVM将var arg params转换为一个对象数组,您需要将一个参数传递给构造函数,该构造函数是对象数组。我还没有尝试过上面的xml,所以可能会有输入错误,但类似上面的东西应该可以工作

对于Java调用(如
applicationContext.getBean()
),解决方案似乎是
new Object[]{new MyObject[]{myParam1,myParam2}
,因为否则Java会将数组解析为vararg。丑陋的男人。。。还有更好的主意吗?