0

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

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

我仍然需要能够将处理命令的类映射到命令文本。我的第一个想法是将 HashMap 从将命令映射到命令处理器的实例更改为将其映射到类名并使用它来实例化类的实例。但这不起作用,因为需要使用例如选项列表配置一些命令。

我已经研究过制作 bean 原型,这将接缝做我想要的关于获取已配置 bean 的新实例的操作,但我对如何映射它感到困惑,我认为我可以使用 bean ID。

我现在处于完全混乱的阶段,想不出该怎么做。

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

4

2 回答 2

0

如果我的要求正确,您要么需要命令类中的工厂方法FactoryBean,要么需要创建实例的工厂方法。

于 2013-02-28T16:17:16.920 回答
0

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

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

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

于 2013-02-28T16:54:08.107 回答