我使用的是Spring3.1
我的应用程序将有一种 bean 管理器。
该管理器将能够检索请求,并且对于每个请求,我需要动态创建新的 bean 实例,该实例将使用它自己的唯一参数启动。
参数将通过请求方法检索。
该 bean 必须处于 Activity 状态并且异步工作。 (例如它会监听jms调用,按需求执行方法等等..)
此外,我还希望能够选择销毁 Bean。
这些 bean 可能类似于 session ,因此当用户注销时我将销毁这些 bean。
我知道我必须创建某种bean列表或bean池并使用某种管理器来管理它。
如何动态创建这些 bean 并让它们保持 Activity 状态,直到我销毁它们?
知道如何实现这样的事情吗?
最佳答案
从这个意义上说,最简单的方法是创建一个StaticApplicationContext
,将其父上下文设置为公共(public)上下文(包含您想要共享的bean的上下文)。您可以通过执行以下操作来实现:
StaticApplicationContext innerContext = new StaticApplicationContext(parentContext);
在此之后,您可能想要声明要通过 Spring 实例化的 bean,以便附加所有 AOP 内容、 Autowiring 和其他功能,因此您需要执行以下操作:
innerContext.registerSingleton("beanName", beanClass);
注册后,您可以实例化 bean,如下所示:
innerContext.getBean(beanClass);
当然,Spring有范围Session
的实现,因此我建议您检查WebApplicationContext
文档,方法loadParentContext
您基本上将 ServletContext 作为参数传递。
关于java - 在Spring中动态创建Bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11383760/