これは初心者の質問かもしれませんが、多くのチュートリアルや例では、これらの注釈が同じことをしているように使用されているのを見ました。
しかし、それを使用するといくつかの制限に遭遇しました@Named
(特に依存性注入など)。違いが説明されているソースを見つけることができませんでした。誰かがいつ使用するかについて大まかな概要を教えていただければ幸いです。他の。
これは初心者の質問かもしれませんが、多くのチュートリアルや例では、これらの注釈が同じことをしているように使用されているのを見ました。
しかし、それを使用するといくつかの制限に遭遇しました@Named
(特に依存性注入など)。違いが説明されているソースを見つけることができませんでした。誰かがいつ使用するかについて大まかな概要を教えていただければ幸いです。他の。
@Named
CDI管理対象Beanに、JSFやJSPなどのビューテクノロジで使用されるEL名を付けます。CDIアプリケーションでは、BeanをCDIで管理するためにアノテーションは必要ないことに注意してください@Named
(@Karlのコメントに感謝します)。
@ManagedBean
BeanをJSFによって管理するようにし、次のことができます。
両方の種類のBean間でインジェクションがどのように機能するかについての詳細は、この関連する質問を参照してください。
Beanのスコープにも違いがあることに注意してください。それらは異なるパッケージに由来しますが、同じ名前が付けられています(JSF:javax.faces.bean
、CDI:、javax.enterprise.context
したがって、間違ったクラスを含めると、エラーや混乱の原因となることがよくあります。
私の経験から:JSFマネージドBeanよりも柔軟性があるため、可能な限りCDIBeanを使用する必要があります。唯一の欠点は、CDIがビュースコープを認識しないことです。そのため、@ ManagedBeanにフォールバックするか、Seamなどのサードパーティの拡張機能を使用する必要があります。