2012-09-02 15 views
5

Ok Spring Gurus ...私のためにこれを壊してください。 Spring MVCの上のドキュメントを読んでいる間、私はこの文全体に電子をカム:Spring DispatcherServlet複数のインスタンス

」....春のApplicationContextのインスタンスがスコープ可能なWeb MVCフレームワークでは、それぞれのDispatcherServletは全て継承し、独自のWebApplicationContextを持っています。定義されたこれらの継承されたBeanは、サーブレット固有のスコープでオーバーライドでき、新しいスコープ固有のBeanは特定のサーブレットインスタンスに対してローカルに定義できます。 Spring Docs Reference

私はこれに基づいていくつかの質問を持っている:

  1. 文はDispatcherServletの2つ以上のインスタンスがあることを意味しています。 Webアプリケーションではサーブレットのインスタンスが1つだけ(理想的には)理想的に存在するため、これはまったく当てはまりませんか?
  2. 「サーブレット固有の有効範囲」とは、上記の文脈の文脈における正確な意味ですか?

答えて

2

これは、私はあなたが何を意味するのかだと思うしない「時折真」に変換

真実ではない全くしないということです。ただ、主に間違った - ウェブアプリで

は、サーブレットのインスタンスは1つだけすることができます(とすべきは、理想的には)これは完全に間違っていない

が存在します。デプロイメント記述子の<servlet>要素(web.xml)を、そのサーブレットを実装するクラスと混同しています。

いくつかの限られた場合を除いて、コンテナは、サーブレットごとにクラスのインスタンスを1つだけインスタンス化できることは事実です。ただし、すべて同じクラスを指定する複数の<servlet>エントリを持つことができます。

「サーブレット特有の範囲は、」 - 非常に良好ではない例として上記の文のコンテキスト

に正確に何を意味するのでしょう(実際、私はいくつかの良い例があると思います):あなたはそれぞれが異なるURLを持ち、データベースが異なる複数のクライアントをサポートするアプリケーションがあるかもしれませんが、それ以外は同じです。ルートコンフィグレーションではビジネスオブジェクトを、web-appコンフィグレーションではデータソースを定義できます。クライアント固有の構成ビーンだけでなく、

+0

上記のように「間違い」を修正しました。ありがとうございました。とにかく、素敵な説明。それは多くのことをクリアすると思う。しかし、私はまだ別のマップされたリクエストを処理するために、同じWebサーブレットを複数のWebアプリケーションに含める必要がある理由について頭を悩ませています。異なるWebアプリケーションを持っていて、それぞれが異なるコンテキストパスを持つのはなぜですか?前者の場合(1つのWebアプリケーション内の複数の類似したサーブレットが異なるURLを処理する)は、単純に深刻な頭痛のレシピになりませんか? – mainas

関連する問題