Создание экземпляра объекта-прототипа «на лету» с помощью параметров

#java #spring

#java #весна

Вопрос:

Мне нужно создать экземпляр области видимости объекта «на лету» во время выполнения моего кода.

Я знаю, что метод поиска был бы хорошим решением:

http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/beans.html#beans-factory-lookup-method-injection

 <!-- a stateful bean deployed as a prototype (non-singleton) -->
<bean id="command" class="fiona.apple.AsyncCommand" scope="prototype">
<!-- inject dependencies here as required -->
</bean>

<!-- commandProcessor uses statefulCommandHelper -->
<bean id="commandManager" class="fiona.apple.CommandManager">
<lookup-method name="createCommand" bean="command"/>
</bean>
  

Могу ли я установить параметр в createCommand метод?

Ответ №1:

Я не думаю, что вы можете, потому что контейнер не знает, что делать с этим параметром. Что вы ожидаете от этого? Метод lookup получает только новый экземпляр объекта, получая его из контейнера. Таким образом, все его зависимости вводятся перед возвратом.

Если вы хотите передать дополнительный аргумент — вы можете сделать это после получения экземпляра. Например:

 Foo someParam = ...;
CommandManager manager = createCommand();
manager.doSomething(someParam);