2011-09-13 18 views
4

ActionContext.getContext().getSession()でセッションマップを取得することと、 SessionAwareで注入することの相違点を読んだ後、どの方法が推奨されているのでしょうか?その理由は何ですか?SessionAwareまたはActionContextを介してセッションを取得する必要がありますか?

SessionAwareを使用することをお勧めします。SessionAwareを使用すると、アプリケーションのテストが簡単になります。唯一の問題はテストしていますか?

誰かがこのテーマについて少し詳しく説明したり、これを説明する参照先を指摘できますか?

答えて

2

私はあなたの以前の質問で同じことをすでに回答しています。どちらの方法でも使用できますし、さらに多くの方法でセッションにアクセスすることもできます。

片道

Map attibutes = ActionContext.getContext().getSession(); 

しかし、あなたはこれを使用して、アクションクラスを直接Struts2の具体的な方法ですActionContextに結びついていますか。 Struts2の主要な目標の1つは、アクションクラスを基になるHTTPコンテキストと他の直接の依存関係から切り離すことです。 プレーンなPOJOのテストケースを書くことは、他の方法よりも簡単で簡単です。

SessionAwareインターフェイスを実装することで、セッションを単純なマップオブジェクトとして指定することができます。これにより、コードはかなり分離されていますが、保守とテストが容易になります。 ActionContext.getContext().getSession()がないのに対し、

私は他のいくつかのいずれかが、この

+0

この回答では、まず、アクションクラスがstruts2固有のクラスieActionContextクラスに関連付けられていると述べました。 2番目の方法では、私たちがActionクラスへのSessionAwareインターフェースを実装する場合、アクションクラスもStruts2固有のクラス、つまりSessionAwareと結びついています。違いはどこにありますか? – Jagadeesh

+0

@Jagadeesh:ユニットテストのために行くときには、ユニットテストをしながらマップを注入するだけで簡単に行えるわけではありません...もっと詳しい情報があります...私の提案はドキュメントだけでなく、明確なアイデアを得るために両者を見てください。 –

+0

明確化のおかげで:) – Jagadeesh

0

SessionAwareに、より良い点が付属していますことを願っていますが、依存性注入のアプローチです。そうでなければ、それらは同一です。どちらの方法もサーブレットAPIの一部であるHttpSessionではなく、Map<String, Object>を返します。

+0

答えは何かに答えるべきですが、あなたの答えはそうではありません。彼の質問は、どのアプローチが良いかを知り、両方のアプローチの利点と欠点を知ることでした。同じようにこの質問に答えることができれば本当に素晴らしいだろう。 – Jagadeesh

+0

@ Jagadeesh私は、2つのアプローチが同じ結果を持っていると説明した回答を出しましたが、彼が質問で示したように、好ましいアプローチは依存性注入アプローチに従っています。あなたが望むならあなた自身の答えを提供することを歓迎します。 –

関連する問題