我是新來的春天,我有一個問題,我找不到答案 - 在方法執行過程中,我需要創建一個託管bean的新實例(範圍==原型)中的預定義數量:Spring在方法調用過程中獲得託管bean
@Component
class SomeClass
{
@Resource
private ConnectionFactory conFactory;
private Set <Client> clients;
@Value ("${clientsNum}")
private int clientsNum;
public void init()
{
Client client = null; //an interface, that the managed bean implements.
for (int i = 0; i < clientsNum; i++)
{
client = ... //how to get a new client instance?
clients.add (client);
client.doSomething();
}
}
public void shutdown()
{
for (Client client : clients)
client.shutdown();
conFactory.shutdown();
}
}
我該怎麼做?
我知道我可以使用init-method \ @PostConstruct註釋(和匹配的destroy方法),但我不知道如何根據所需的數量獲取實例。
我在過去幾天搜索了這個問題,並閱讀了關於服務定位器,查找方法和工廠bean的信息。它們都使用CGLIB(我不喜歡使用它)或Spring的ApplicationContext(它在Spring的實現中創建了一個依賴項),並且最重要的是它們不會在方法調用期間處理bean的創建(或者至少 - 我沒有 - 瞭解如何在調用過程中使用它們)。
請協助。
謝謝。
編輯:
最終我意識到,我必須爲使用CGLIB或Spring的應用程序上下文,我選擇使用service locator選項。
有什麼問題要解決? - 我認爲你找不到合理答案的原因是,你想以不是春天的方式解決問題。 - 所以我問這個問題。 – Ralph 2014-09-28 16:32:59
我不知道如何獲得託管bean的新實例,而不使用注入,但在方法調用期間。 – javaist 2014-09-29 07:46:57