我有一个基于servlet的应用程序,它当前使用命令处理器的注入HashMap来处理用户输入的命令。这非常有效,但我需要修改它,以便命令处理器的每个实例都是唯一的。
新要求来自将一个命令的输出“管道”到另一个命令的需要,因此如果命令处理器仍然是单个实例“管道”列表到列表中将会有问题。
我仍然需要能够将处理命令的类映射到命令文本。 我的第一个想法是改变HashMap将命令映射到命令处理器的实例,并将其映射到类名,并使用它来实例化类的实例。但由于需要使用例如选项列表来配置某些命令,因此无效。
我已经看过制作bean的原型,它可以解决我想要的关于获取配置bean的新实例的问题,但我对如何映射这个问题感到困惑,我以为我可以使用bean ID。 / p>
我现在处于完全混乱的阶段,无法思考如何做到这一点。
我知道这个解释有点轻微,但这反映了我的困惑,我怀疑最大的帮助将来自要求澄清,这将有助于使头部整理。
答案 0 :(得分:0)
如果我的要求正确,您需要在命令类中使用factory method,或者创建实例的FactoryBean
。
答案 1 :(得分:0)
您可以使用请求范围的bean:
@Component
@Scope(value=WebApplicationContext.SCOPE_REQUEST,proxyMode=ScopedProxyMode.TARGET_CLASS)
public class CommandProcessor {
}
您可以在代码中注入CommandProcessor,Spring将确保为每个用户请求获取不同的实例。您还需要在类路径上使用CGLIB。