使用带有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。丑陋的男人。。。还有更好的主意吗?