春のMVCとCDI / JEE6をミックスするための最良の方法は何ですか?
-
26-09-2019 - |
質問
私は、JSFのファンではありません。 Spring MVCのは私に多くの意味を行い、私は過去にそれを使用しました。
あなたはそれの私を話したりCDIとJEE6にうまくそれを統合して共有し、落とし穴のためのヒントを提供することができます。
私は?ちょうどMVCのもののためのアプリケーション・コンテキストを持つが、私は私のMVCコントローラに@Injectや@EJBを使用した場合、何が間違って行くことになるだろう気にしない。
SEAM3思わ興味深いけれども、それは生産の準備ができている?
解決
あなたはそれの私を話したりJEE6にうまくそれを統合するためのヒントを提供することができ、CDIとの共有と落とし穴
たぶん私は間違っているが、私はあなたが何とかCDIと春のDI部との間の選択をしなければならないと思い、そのうちの一つは、魔法が発生するためのオブジェクトを作成する責任を負うことがあります。あなたは春のMVCでCDIを使用したいのであれば、あなたのコントローラーCDI Beanを作成する必要があると思います。 のJavaOne 2010投稿者:のJava EE 6パネル "私たちは今、何をしますか?"ノートはします:
SpringMVCとCDI? =>技術的に可能:コントローラとして使用CDI豆を(しかしレザは、彼らが仕事をするSpringMVCのための十分な需要を見ていないと言います)。
私はまた暖かくのJava EE 6(CDI / EJBを見てすることをお勧め3.1)XOR春コアリローデッドするます。
私は?ちょうどMVCのもののためのアプリケーション・コンテキストを持つが、私は私のMVCコントローラに@Injectや@EJBを使用した場合、何が間違って行くことになるだろう気にしない。
春は内蔵のサポートを提供しますJSR-330 のから「注入時」ともする@EJBためのいくつかの魔法を提供します。それはあなたが探しているすべてのなら、春が動作します。しかし、それはCDI(JSR-299)は、あなたを与えるもの。
だけではありません他のヒント
別のオプションは、(ジャージー実装では、JSPに制御を転送することができます)コントローラとしてJAX-RSを使用して、あなたのビューのJSPのを使用することです。この方法は、あなたは、Java EEと春の統合を心配する必要はありません。
たとえば、あなたがにHomeControllerを持っている可能性があります:
@Path("/")
@Stateless
public class HomeController {
@Context
HttpRequest request; // Injects request object so you set attributes.
@EJB // Inject your EJB
EmployeeServiceLocal employeeService;
@GET
public Viewable getHomePage() {
Employee employee = employeeService.getEmployee();
request.setAttribute("employee", employee);
return new Viewable("/home.jsp", null);
}
}
これはhome.jspを呼ばれるJSPへのご案内です、あなたはリクエストオブジェクトを経由してJSPにあなたのデータを取得することができるだろう。 JAX-RSはそうあなたがRESTの理解を持っている必要があります下のコードで何が起こっているのか理解することは、RESTful Webサービスのために使用されることに注意してください。
どのビルドに説明する春からCDIを使用してSpringアプリケーションコンテキストにCDI BeanManagerからすべての豆をインポートBeanFactoryPostProcessorとCDIツースプリングブリッジ
パスカルは、右のあなたは春のDIとCDIの間の選択をしなければならないと言っているが、この方法で、あなたは選択を行うことができます。のモジュールごとにの
は、一般的なWARのレイアウトでは、WEB-INF / libにサービスおよび持続モジュールの数を使用して、一つのウェブ・モジュールがあります。 Webモジュールは、のないの豆のアーカイブであり、唯一の春のDIを使用しながら、CDIツー春橋で、あなたは、CDIビーンアーカイブにWEB-INF / libにモジュールを有効にすることができます。
ブリッジがJNDIを介してCDI BeanManagerにアクセスし、各CDI beanのスプリング工場Beanを作成します。
私はあなたのユースケースのために、正確に、このブリッジを使用しています。Java EE 6のバックエンドで春のMVCのWebフロントエンドの統合
。