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/

相关文章:

java - jar 和源中的命名注释失败

java - Spring mvc 4中如何防止CSRF攻击

java - Spring Boot:包中的类未加载

spring - 依赖spring-boot-starter-test在多模块maven项目中没有继承

python - 如何在 session 中运行多个图形 - Tensorflow API

php - 页面刷新时 session 被破坏

session.invalidate() 实际上并不清除 JSF session 范围内的值

java - 使用 xpath 而不是 XSD 对象生成来访问 XML 详细信息?

java - SpringBoot 应用程序在 WLS12c/Java8/RHEL fedora7.5 中失败,无法读取架构文档 http ://www. springframework.org/schema/beans/spring-beans.xsd

java - 条件 API 组合 AND/OR