2011-01-20 7 views
5

Spring MVCのインターセプタを使用してOpenSessionInViewInterceptorをコンフィグレーションするか、web.xmlのフィルタでOpenSessionInViewFilterをコンフィグレーションすることで、どのOpen Session In Viewを使用するかを決めるのは難しいですか?私が研究したことから、彼らはほとんど同じことをしますが、私はそれぞれのタイプの違いと使い方を理解しようとしています。どちらを使うか:OpenSessionInViewInterceptorかOpenSessionInViewFilter?

2つの最大の違いは、web.xml(たとえば、サーブレット2.2以前)でフィルタを使用できない人々にとって、唯一のオプションはOpenSessionInViewInterceptorを使用することです。どうやら、私は私のプロジェクトのためのカスタムインターセプタを作成する必要があるので、私は迎撃に向かって傾いているので、私はSpring MVC設定ファイルでこれらのすべての "フィルタ"をグループ化するつもりではなく、OpenSessionInViewFilterをweb.xmlとカスタムSpring MVC設定ファイルのインターセプタ。それは本当にどちらを使うのか分かりません。好奇心が私をここで殺します。

誰でもあなたの考えを分かち合うことができますか?あなたはどちらを使いますか?

ありがとうございました。

答えて

8

あなたが言うように、2つは多かれ少なかれ同等です。 Springは両方を提供するので、既存のアプリケーションに最適なものを選ぶことができます。

Spring MVCを使用している場合は、設定が容易でSpring MVCとの統合が容易なため、インターセプタを使用することは理にかなっています。

しかし、Spring MVCを使用せず、Springをビジネスロジックレベルでのみ使用する場合、インターセプタは実際にはオプションではなく、フィルタはより適切になります。フィルタはSpringで管理されていないので、Springと統合するのは難しいですが、それはトレードオフです。

+0

ありがとうございました。私は、インターセプタを使用することの利点の1つは、春の豆をその中に配線することの容易さであると信じていますが、フィルタを使用するときはその機能を利用できません。 – limc

+0

古い投稿を元に戻すことはできませんが、 "ビジネスロジックレベルでSpringを使用する"場合は、 '@ Transactional'を使用してコードを整理して作業する方が理にかなっていませんか?私は議論の余地がありません。非MVCアプリケーションでのOSIVFの有用性を理解していないだけです。 – Andy

4

春のコントローラ、つまりカスタムサーブレットを経由するレガシーコード、または直接ヒットしたjspを経由しないリクエストがある場合、フィルタはそれらをカバーし、ラップされていることを確認しますセッション。 DispatcherServletの春にリクエストが取得されないため、インターセプタはそれらをカバーしません。

+0

優れたポイント。 – limc

関連する問題