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