CDIを使用します。
JSF 2.3に従い、@ManagedBeanは非推奨です。仕様の問題1417も参照してください。もう選択する理由がないことを、この手段@ManagedBeanを超えます@Named。これはMojarra 2.3.0ベータバージョンm06で最初に実装されました。

歴史
中心的な違いは、@ManagedBeanJSFフレームワークによって管理され@ManagedProperty、別のJSF管理Beanでのみ使用できることです。@NamedCDI・フレームワークを介してアプリケーションサーバ(コンテナ)で管理を介してである@Injectようなコンテナ管理アーチファクトの任意の種類の利用可能な@WebListener、@WebFilter、@WebServlet、@Path、@Stateless、などともJSF @ManagedBean。反対側から見ると、またはその他のコンテナ管理のアーティファクト内で@ManagedPropertyは機能しません@Named。内部でのみ機能します@ManagedBean。
もう1つの違いは、CDIは実際に、ターゲットスコープの現在のインスタンスに委任するプロキシを、リクエスト/スレッドごとに(EJBの注入方法などのように)注入することです。このメカニズムにより、より狭いスコープのBeanをより広いスコープのBeanに挿入できますが、これはJSFでは不可能@ManagedPropertyです。JSFは、ここで、setterを呼び出すことによって物理インスタンスを直接「注入」します(それが、setterが必要であるのとまったく同じ理由ですが、では必要ありません@Inject)。
直接の欠点ではありませんが、他の方法があります—の範囲@ManagedBeanは単に制限されています。別の見方をすると、について「あまりにも」公開したくない場合は@Inject、マネージドBeanだけを保持することもできます@ManagedBean。protected対のようなものpublicです。しかし、それは実際には重要ではありません。
少なくとも、JSF 2.0 / 2.1では、JSFバッキングBeanをCDIで管理することの主な欠点は、に相当するCDIがないことです@ViewScoped。@ConversationScoped近づくが、それでも手動起動と停止要求し、それが醜い追加しcid、結果のURLへのリクエストパラメータを。MyFaces CODIは、JSFを完全に透過的javax.faces.bean.ViewScopedにCDIにブリッジして簡単にできるようにします@Named @ViewScoped。ただし、windowId単純なページ間のナビゲーションでも、結果のURLに醜い要求パラメーターを追加します。OmniFaces@ViewScopedは、Beanのスコープを任意のリクエストパラメータではなくJSFビューステートに実際に結び付ける真のCDI でこれをすべて解決します。
JSF 2.2(この質問/回答から3年後にリリースされます)は、の@ViewScopedフレーバーで、完全なCDI互換の新しいアノテーションを提供しますjavax.faces.view.ViewScoped。JSF 2.2に@FlowScopedは、@ManagedBean同等のものがないCDIのみが付属しているため、JSFユーザーはCDIに向かっています。@ManagedBeanJava EE 8に従って、友人は非推奨になると予想されます。現在をまだ使用している場合は@ManagedBean、将来のアップグレードパスに備えてCDIに切り替えることを強くお勧めします。CDIは、WildFly、TomEE、GlassFishなどのJava EE Webプロファイル互換コンテナーですぐに利用できます。Tomcatの場合は、JSFの場合とまったく同じように、個別にインストールする必要があります。TomcatにCDIをインストールする方法も参照してください。