java - 在Spring中动态创建Bean

标签 java spring session asynchronous

我使用的是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/

相关文章:

php - 如何使用 PHP 的 SoapClient 类使用有状态 Web 服务?

java - 如何使用 Content Provider 将文件放入 firebase (内容 ://) as source?

java - 如何在简单的Servlet中使用Spring Data JPA?

java - session.invalidate() 的奇怪问题

spring - 在运行时动态添加jar到SpringBoot

java - Tomcat 7.0 : Error creating bean with name 'org. springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor

c++ - MFC程序中不同对话框之间如何传递数据?

java - Java 调用方法中的垃圾收集

Java多线程自增可以为负数吗?

java - 如何在没有 'input' 元素的情况下在 Selenium WebDriver 中上传文件