Spring bean根据查找的不同类型的新实例

时间:2013-02-28 16:08:14

标签: spring

我有一个基于servlet的应用程序,它当前使用命令处理器的注入HashMap来处理用户输入的命令。这非常有效,但我需要修改它,以便命令处理器的每个实例都是唯一的。

新要求来自将一个命令的输出“管道”到另一个命令的需要,因此如果命令处理器仍然是单个实例“管道”列表到列表中将会有问题。

我仍然需要能够将处理命令的类映射到命令文本。 我的第一个想法是改变HashMap将命令映射到命令处理器的实例,并将其映射到类名,并使用它来实例化类的实例。但由于需要使用例如选项列表来配置某些命令,因此无效。

我已经看过制作bean的原型,它可以解决我想要的关于获取配置bean的新实例的问题,但我对如何映射这个问题感到困惑,我以为我可以使用bean ID。 / p>

我现在处于完全混乱的阶段,无法思考如何做到这一点。

我知道这个解释有点轻微,但这反映了我的困惑,我怀疑最大的帮助将来自要求澄清,这将有助于使头部整理。

2 个答案:

答案 0 :(得分:0)

如果我的要求正确,您需要在命令类中使用factory method,或者创建实例的FactoryBean

答案 1 :(得分:0)

您可以使用请求范围的bean:

@Component
@Scope(value=WebApplicationContext.SCOPE_REQUEST,proxyMode=ScopedProxyMode.TARGET_CLASS)
public class CommandProcessor {
}

您可以在代码中注入CommandProcessor,Spring将确保为每个用户请求获取不同的实例。您还需要在类路径上使用CGLIB。