5

ActionContext.getContext().getSession()経由でセッションマップを取得することと、それを注入する ことの違いを読んだ後、SessionAwareどちらが好ましい方法なのか、なぜですか?

API では を使用することをお勧めしますSessionAware。Web で を使用SessionAwareするとアプリケーションのテストが容易になると読みましたが、テストだけが問題なのでしょうか?

誰かがこの件について少し詳しく説明したり、これを説明する参考文献を指摘したりできますか?

4

2 に答える 2

2

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

一方通行

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

ただし、これを使用し、アクションクラスActionContextがStruts2固有の方法であるに直接関連付けられている場合。Struts2の主な目標の1つは、アクションクラスを基盤となるHTTPコンテキストから、および他の直接的な依存関係から切り離すことです。また、プレーンPOJOのテストケースを作成するのは、他の方法よりもはるかに簡単で優れています。

インターフェイスを実装SessionAwareすることで、セッションが単純なマップオブジェクトとして必要であることをStruts2に示します。これにより、コードが大幅に分離されるだけでなく、保守とテストが容易になります。

他の誰かがこれについてもっと良い点を持って来ることを願っています

于 2011-09-13T12:39:36.390 に答える
0

SessionAware依存性注入アプローチですが、ActionContext.getContext().getSession()そうではありません。それ以外の場合、それらは同一です。これらのアプローチは両方とも、サーブレット API の一部である とはMap<String, Object>対照的に、を返します。HttpSession

于 2011-09-13T13:20:15.840 に答える