@Singleton サーブレットの存続期間中に変更したくない変数の初期化に関して、サーブレットには 2 つのオプションがあります。
Field a;
フィールド a は、サーブレットによってのみ内部的に使用されます。アクセサ メソッドはありません。簡単にするために、フィールド a は文字列のように不変です。
オプション 1 - フィールドが次のようになるように、ServletContext の依存性注入から取得した情報を利用して、コンストラクター内のフィールドを初期化します。
private final Field a;
オプション 2 - フィールドが次のようになるように、ServletConfig (および ServletContext) から取得した情報を利用して、オーバーライドされた init(ServletConfig cfg) メソッドで変数を設定します。
private Field a;
明らかに、フィールドを final にしたいのですが、このフィールドは非公開であり、アクセサー メソッドが関連付けられていないので、それでも final にする必要がありますか?
要約すると、フィールドをコンストラクターで初期化して final にするか、init メソッドで初期化してアクセサーなしで非 final のままにする必要がありますか?
ありがとうございました。