質問: CDI環境にてUtilクラスを作成する場合は下記1~3どれがベストでしょうか? 性能面や利便性(JUnitとの相性)等考えておりますが、どちらが良いか答えが出ません。 1. staticクラス 2. ApplicationScopedなクラス 3. 上記以外
回答: 「Utilクラス」が何を指すかによりますが、状態(可変なインスタンス変数)を持たないのであれば、「1.」でいいように思います。 ユーティリティクラス(Apache Commons Langのような)には、状態に依存しない共通の処理をstaticメソッドだけで実装することが一般的だと思います(状態を持たない)。 `@ApplicationScoped`は、ドロップダウンリストの値のようにアプリケーションのユーザー全体で共有する状態を保持するために、使用します。 選択の基準はそのあたりかなぁと思います。利便性という観点では、多くの場合、コンテナなどの前提ソフトウェアを必要とせず、扱えるユーティリティクラスの方がいいのではないでしょうか。性能面への影響は、1~3のどの選択肢にするかで大きく変わることは無いように思います(実装次第)。