2012-01-07 20 views
2

私はJSFを読んでおり、マネージドBeanに関する質問があります。 「管理」は、JSF実装がライフサイクルをインスタンス化して管理するという事実のみを参照しますか?新しいことは、インスタンス化とそのライフサイクルを処理する別の実装であるCDIを使用することです。それは管理されていることの意味ですか?JSFのマネージドbean

CDIは、Beanをインスタンス化してJSFの外部で管理できる実装ですか、それがなぜ優れているのでしょうか?もしそうなら、以前はJSF以外のオプションは何でしたか?各コンテナや実装には独自の豆管理方法がありましたか? CDIはこれを統一するものですか?

+1

ここで私はあなたを助けると思う素晴らしい答え - http://stackoverflow.com/questions/2930889/are-managedbeans-obsolete-in-javaee6-because-of-named-in-cdi-weld。 – Perception

+0

@Perceptionこんにちは、ありがとう。これは私の質問にほとんど答えましたが、まだ残っています。 '@ ManagedBean'が実装のために(そしてこれはビューをサポートするBeanにのみ適用される)アノテーションであった場合、Beanで何をしましたかビジネス層で?この責任をEJBコンテナに残す可能性はありませんでしたか? – LuckyLuke

答えて

2

JSF2アノテーションの前に、開発者はにfaces-config.xmlというBeanを登録する必要があります。サポートはJSF2にまだありますが、サード・パーティJARにパッケージされているマネージドBeanの注釈をオーバーライドする場合は、オプションになり、場合によっては唯一の方法となります。

JSFとCDIの前にロングは、plain JSP/Servletで、開発者は(プレチェックを省略し、手動で明示的にインスタンス化し、明示的に

request.setAttribute("requestScopedBean", requestScopedBean); 
request.getSession().setAttribute("sessionScopedBean", sessionScopedBean); 
getServletContext().setAttribute("applicationScopedBean", applicationScopedBean); 

によってリクエスト、セッションまたはアプリケーションスコープでそれらを配置することにより、豆自体を作成して管理する必要がありますBeanはスコープ内に配置されているだけですが、それ以外の場合は再利用されます)

上記はJSFが「カバーしている」ものです。

次に、さまざまなMVCフレームワークが、BeanをXMLファイルで宣言することによって、またはアノテーションでも宣言することによって、これを抽象化するために考案されました。すべてのMVCフレームワークには独自の方法で豆を管理していました。その後、フレームワークに依存しないアプローチを提供することで統一しようとしていたSpringがありました。それを標準化したJava EE 6 CDIがありました。

このすべては常にコンテナに依存しませんでした。これはフレームワーク固有のものです。

関連する問題