0

現在、コマンド プロセッサの挿入された 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 に答える