2013-02-28 63 views
0

我有一個基於servlet的應用程序,它目前使用注入的命令處理器的HashMap來處理用戶輸入的命令。這工作得很好,但我需要修改它,以便命令處理器的每個實例都是唯一的。Spring bean根據查找varing類型的新實例

新的需求來自於需要將一個命令的輸出「管道化」到另一個命令中,因此如果命令處理器保持單個實例將列表「管道化」到列表中將會產生問題。

我仍然需要能夠將處理命令的類映射到命令文本。 我的第一個想法是將HashMap從映射命令映射到命令處理器的一個實例,將其映射到類名稱並使用它來實例化類的一個實例。但是這不起作用,因爲需要用一些選項來配置一些命令。

我已經看過讓接口做我想要的關於獲取配置的bean的新實例的bean原型,但我很困惑我如何映射這個,認爲我可以使用bean ID。

我現在處於完全混淆的階段,不能考慮如何做到這一點。

我知道這個解釋有點亮,但這是我的困惑的一種反映,我懷疑最大的幫助將來自澄清的請求,這將有助於讓頭腦有序。

+0

爲什麼你不能讓你的命令處理器作爲singletons工作?你關心併發問題嗎? – rootkit 2013-02-28 16:55:41

回答

0

你可以使用請求範圍豆:

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

你可以只注入CommandProcessor在你的代碼和Spring將確保你爲每個用戶請求得到不同的實例。你的類路徑上也需要CGLIB。