CDI環境にてUtilクラスを作成する場合は下記1～3どれがベストでしょうか？  
性能面や利便性（JUnitとの相性）等考えておりますが、どちらが良いか答えが出ません。

1\. staticクラス  
2\. ApplicationScopedなクラス  
3\. 上記以外
CC BY-SA 4.0
2019-04-06T15:19:35.410
53982
2019-04-08T03:38:43.330
2019-04-06T15:31:13.960
3060
32813
question
java-ee
CDI環境にてUtilクラスを作成する場合はstaticクラス?ApplicationScoped?
「Utilクラス」が何を指すかによりますが、状態（可変なインスタンス変数）を持たないのであれば、「1.」でいいように思います。

ユーティリティクラス（[Apache Commons Lang](https://github.com/apache/commons-
lang)のような）には、状態に依存しない共通の処理をstaticメソッドだけで実装することが一般的だと思います（状態を持たない）。

`@ApplicationScoped`は、ドロップダウンリストの値のようにアプリケーションのユーザー全体で共有する状態を保持するために、使用します。

選択の基準はそのあたりかなぁと思います。利便性という観点では、多くの場合、コンテナなどの前提ソフトウェアを必要とせず、扱えるユーティリティクラスの方がいいのではないでしょうか。性能面への影響は、1～3のどの選択肢にするかで大きく変わることは無いように思います（実装次第）。
CC BY-SA 4.0
2019-04-08T03:38:43.330
54008
2019-04-08T03:38:43.330
21092
53982
answer