0

jsp/サーブレット アプリケーションに携わっています。アプリケーションは、セッションまたはリクエストで必要なオブジェクトを保存します。ただし、複数の場所で同じオブジェクトをセッションまたはリクエストに挿入できます。つまり、書く代わりに

HomeBean homeBean = (HomeBean) request.getSession(false).getAttribute("homeBean");

私は書く

HomeBean homeBean = BeanStore.getHomeBean();

私は考えすぎですか、それとも過剰に設計していますか?

4

1 に答える 1

1

などの一部のフレームワークでは、次のように、セッションまたは一部のセッション属性をビジネス コンポーネントに直接注入できます。

@Inject
private HomeBean homeBean;

また、HTTP セッション アクセス コードでコードを汚染する代わりに、オブジェクトを 1 回フェッチして必要な場所に渡すだけです。これにより、読み取りとテストが容易になります。

本当に直接BeanStore.getHomeBean()渡したくない場合は、正しく書くのが本当に難しいことに注意してください。HttpSessionサーブレット フィルターとThreadLocal, やってくる! 言うまでもなく、そのような静的な「工場」は非常に醜いと思います。


補足:

request.getSession(false).getAttribute("homeBean")

request.getSession(false)しばしば戻ってきnullて、厄介なままになりますNullPointerException。この場合、パラメーターを優先trueするか、まったく使用しません。

于 2012-07-17T21:31:13.320 に答える