2

サーブレットのコンストラクターは良い/悪い習慣と見なされますか? init()メソッドと比べてどうですか?servlet-3 とバニラ JavaEE (javax.inject パッケージで提供される CDI) を使用する

4

2 に答える 2

4

サーブレットでコンストラクターを使用しても問題はありません。に切り替える理由は、、などinit()を取得する必要がある場合です。これらのオブジェクトは、コンストラクターで(まだ)使用できない場合があります。ServletConfigServletContext

また、仮想的には、一部のコンテナは、動的サブクラス化やプロキシなどのサーブレットを使用して凝ったことを行う可能性があります。最後に、コンストラクターの副作用により、テストが困難になる傾向があります。

予期しない動作を回避し、サーブレットが100%移植可能であることを確認するには、に固執するだけinit()です。destroy()また、同様に使用する場合、実装init()するとコードがより「対称」になります。

も参照してください

于 2012-07-22T15:39:50.173 に答える
0

はい、サーブレットにコンストラクターを含めることができますが、必須ではありませんbcoz-

サーブレットは Web コンテナーによって初期化されます。サーブレットは、他の Java クラスとは異なり、初期化されません。コンストラクターは明示的に作成されたオブジェクトを初期化するために使用され、サーブレットは初期化に別のメソッド「init()」を使用します。

サーブレットは単なるインターフェース(javax.servlet.Servlet)であり、Javaのインターフェースにはコンストラクターがなく、実装クラスのコンストラクターはサーブレットインターフェースで宣言できず、意味がありません。コンテナーは、init() メソッドのみを使用してサーブレットを初期化します。

于 2012-11-20T11:36:07.707 に答える