【发布时间】:2014-09-28 12:52:46
【问题描述】:
我是 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 选项。
【问题讨论】:
-
您要解决的问题是什么? - 我认为您找不到合理答案的原因是,您想以一种不灵活的方式解决问题。 - 所以我问这个问题。
-
我不知道如何在不使用注入但在方法调用期间获取托管 bean 的新实例。
标签: java spring instantiation