web-dev-qa-db-ja.com

VaadinとSpringMVCの統合

VaadinFrameworkでSpringMVCを使用する可能性について考えています。それらを一緒にうまく再生させるための文書化された方法はありますか?また、それらを一緒に使用するのは良い考えですか?パフォーマンスに関連する;専用サーバーでアプリを実行します。

私の質問をもう少し明確にするために、Vaadinを使用してレンダリングし、すべてのモデルデータにアクセスできるSpringMVCコントローラーからmodelandviewを返すにはどうすればよいですか?.

25
dakull

VaadinのSpringサポートは非​​常に新しいものですが、最近フォーラムで多くの話題があり、テストされたものもあります。動作しているようです。 Vaadin wikiにはそれに関する記事があり、フォーラムにはVaadin + Springの統合について話しているスレッドがいくつかあります。

Wiki:Spring Integration
フォーラム:ツールキットをSpringアプリケーションと統合できますか
フォーラム:春の統合の問題
フォーラム:Springでの作業
フォーラム:Spring Integration

20
Jens Jansson

VaadinをSpringMVCと統合することが賢明な選択であるかどうかはわかりません。その無駄。 MVCは、典型的なページベースのWebアプリを対象としていますが、vaadinはデスクトップアプリのようにビューステートベースです。私は通常、途中で会議を行い、春にビジネス層とデータアクセス層を持ち、Vaadinをそのまま使用します。

5
dhrbo

サンプルのWARアプリケーションを含む私のAutowiringApplicationServletソリューションについては、Vaadinフォーラムの このスレッド を参照してください。

2
Archie

dhrboに同意しました。

spring MVCを使用するのは賢明ではありませんが、vaadinを使用したwebflowではさらにそうです。 vaadinは別のWebアプリフレームワークです。

vaadinプロジェクトで「springmvc」のアイデアが必要な場合は、それをspring-core、beans、およびcontextと統合します。そうすれば、コントローラー、ui(vaadin)、およびモデル(hibernate/ormsと統合)を明確に分離できます。

1
gerarldlee

これは、SpringサービスレイヤーとVaadinの統合に関する記事です。元の質問があったSpringMVCとは直接関係ありませんが、VaadinSpring統合を研究している他の読者へのポインタになる可能性があります。

http://psponcoding.blogspot.com/2011/03/vaadin-spring-integration.html

1
psp

org.springframework.web.servlet.mvc.ControllerのhandleRequestは、パラメーターとしてHttpServletRequestHttpServletResponseを取ります。これらから、URIフラグメントを処理することはできません。そのため、コントローラーはURIフラグメントに基づく要求の制御には適していません。

私のアプリケーションでは、Springコントローラーと非常によく似た概念を実装しました。私のアプリケーションにはまだ「ビュー」と「モデル」の概念があります。各ビューは個別のクラスに実装され、ページの中央ブロックに表示されます。 URL処理のロジックをそのクラスに一元化したかったので、クラスAbstractControllerEntryを作成しました。

public static abstract class AbstractControllerEntry {
    public abstract boolean matches(String fragment);
    public abstract void open(MainWindow window, String fragment);
}

ConstantEntryPrefixEntryRegexEntryなどの便利なサブクラスがいくつかあります。

各ビュークラスには、AbstractControllerEntryを返す静的メソッドがあります。すべてのエントリのコレクションは、MyControllerクラス内の静的配列に保持されます(Spring MVCコントローラーではありません)。フラグメントが変更されると( riFragmentUtility を参照)、すべてのエントリを繰り返し、最初に一致するものをopenと呼びます。モデルオブジェクトの検索など、その他のロジックはすべて、ビュークラス内のAbstractControllerEntry実装にあります。

さらに、ビュークラスでURIフラグメントを生成する別の静的メソッドがあるため、ビューへの各参照はクラスへの実際の参照であり、これは壊れたリンクの解決策です。また、各ビューには、現在のビューのフラグメントを取得するためのインスタンスメソッドがあり、堅牢性を高めるためにコントローラーエントリと一致するかどうかがチェックされます。

0
Oliv