あなたの質問は、構成設計パラダイムよりも規約に関するものです。過去の過ちと闘うために、とりわけ広範な構成の必要性に関係するものとして、多くの Java フレームワーク/API などの最後のリリース以降、多くのデフォルトが導入されてきました。この場合、JSF/CDI も例外ではありません。
たとえば、Bean に でアノテーションを付けて、EL スコープで使用できるように@ManagedBean
するだけで十分です。@RequestScoped
simpleClassName
name() 属性の値は、マネージド Bean 名と見なされます。name 属性の値が指定されていないか、空の文字列である場合、マネージド Bean 名は、完全修飾クラス名の非修飾クラス名部分を取得し、最初の文字を小文字に変換することによって導出されます。たとえば、完全修飾クラス名 com.example.Bean を持つクラスに ManagedBean アノテーションがあり、アノテーションに name 属性がない場合、managed-bean-name は bean と見なされます。このアノテーションが付加されるクラスの完全修飾クラス名は、マネージド Bean クラスと見なされます。
マネージド Bean のスコープは、NoneScoped、RequestScoped、ViewScoped、SessionScoped、ApplicationScoped、または CustomScoped アノテーションのいずれかを使用して宣言されます。スコープ アノテーションが省略されている場合、Bean は RequestScoped アノテーションが存在するかのように処理する必要があります。
CDI Bean、EJB、JPA Entity クラスなどにも同じことが当てはまります。したがって、このタイプの行を配置する唯一の理由@ManagedBean(name = "myBean") public class MyBean
は、マネージド Bean の生成された名前を自分自身または経験の浅い聴衆のために明示的に繰り返すことです。
また、開発者が、クラスの単純な名前にちなんで Bean を命名するのではなく、次の行のような明示的な短い自己説明的な名前を参照する傾向があることにも注意してください@ManagedBean(name = "settings") public class UserDefinedSettingsBean
。