サーブレットのコンストラクターは良い/悪い習慣と見なされますか? init()メソッドと比べてどうですか?servlet-3 とバニラ JavaEE (javax.inject パッケージで提供される CDI) を使用する
2 に答える
サーブレットでコンストラクターを使用しても問題はありません。に切り替える理由は、、などinit()を取得する必要がある場合です。これらのオブジェクトは、コンストラクターで(まだ)使用できない場合があります。ServletConfigServletContext
また、仮想的には、一部のコンテナは、動的サブクラス化やプロキシなどのサーブレットを使用して凝ったことを行う可能性があります。最後に、コンストラクターの副作用により、テストが困難になる傾向があります。
予期しない動作を回避し、サーブレットが100%移植可能であることを確認するには、に固執するだけinit()です。destroy()また、同様に使用する場合、実装init()するとコードがより「対称」になります。
も参照してください
はい、サーブレットにコンストラクターを含めることができますが、必須ではありませんbcoz-
サーブレットは Web コンテナーによって初期化されます。サーブレットは、他の Java クラスとは異なり、初期化されません。コンストラクターは明示的に作成されたオブジェクトを初期化するために使用され、サーブレットは初期化に別のメソッド「init()」を使用します。
サーブレットは単なるインターフェース(javax.servlet.Servlet)であり、Javaのインターフェースにはコンストラクターがなく、実装クラスのコンストラクターはサーブレットインターフェースで宣言できず、意味がありません。コンテナーは、init() メソッドのみを使用してサーブレットを初期化します。