Создание Spring Bean с использованием FactoryMethod с переменными аргументами из Spring? - PullRequest
3 голосов
/ 17 февраля 2012

Как мы можем создать бин, используя FactoryMethod с переменными аргументами.

 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>

Spring выдаёт мне сообщение об ошибке,

org.springframework.beans.factory.BeanCreationException: Ошибка создания бина с именем 'Connection', определенным в файле [./beans.xml]: не найден соответствующий фабричный метод: фабричный метод 'composeConnection'

1 Ответ

5 голосов
/ 17 февраля 2012

Попробуйте следующее:

<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 в массив объектов, и вам нужно передать один параметр в конструктор,массив объектов.Я не пробовал вышеупомянутый xml, поэтому у меня могут быть опечатки, но что-то вроде выше должно работать.

...