Frühling + Vaadin integration design patterns
Welche design-patterns werden verwendet, wenn die Integration von spring mit vaadin/gwt? Wir sind mit spring mit hibernate in unserer Anwendung, jedes dao eine spring bean. Frage ist, was ist der beste Weg, Sie zu verwenden auf Vaadin-Seite?
Optionen, die wir haben, so weit sind:
- alle vaadin-Steuerelemente Frühjahr Bohnen (manchmal vielleicht schwierig wird..., mit Prototyp-Umfang etcc)
- mit compile-time-weaving - aber es ist sehr ärgerlich, führen Sie maven installieren, nach jeder änderung bei der Zusammenstellung ein paar Minuten dauert,
- load-time weaving scheint zu Konflikten mit atomikos
- erstellen einige bean-manager, die autowired alle benötigten daos und gibt die Instanz wie in einem singleton
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen, mein Spring Sachen Vaadin Add-On, das hat einige hilfreiche Klassen für die Integration von Vaadin und Spring.
Es ist ein demo auf GitHub, die zeigt, wie es funktioniert.
Ich würde empfehlen, mit Vaadin UIProvider Mechanismus.
Auf diese Weise autowiring in UI ist völlig transparent.
Können Sie einen Blick auf ein wirklich einfaches Beispiel, das mit dieser Lösung auf github: Frühling-vaadin-Beispiel
Nach dem spielen ein bisschen mit Vaadin und Spring, entschieden wir uns für Spring-beans nur für die DAO-Klassen, wo PersistenceContext injection kommt in wirklich praktisch. Alle anderen Klassen, einschließlich aber nicht beschränkt auf Vaadin-Steuerelemente, sind "normale" Klassen mit keinen Frühling, die Kontrolle über Sie.
Nach, dass die Entscheidung, die eigentliche Frage "wie bringen wir die Feder-aktiviert DAO in einem nicht-Feder-code?" Wir wählen eine quick&dirty Lösung, die "funktioniert einfach" mit minimalem Aufwand.
0) Hinzugefügt, zwei Spring-Listener und filter web.xml:
1) Erstellen Sie eine Anwendung-breites Platzhalter für alle Spring-managed-service-Bohnen:
2) Erklären Feder-service-Klassen normalerweise via @Service-Stereotyp-annotation.
3) Das Vaadin-servlet-Anwendung hat load-on-startup-enabled. Die eigentliche init () - Methode führt folgende Schritte aus:
4) Die Anwendung code zum aufrufen von DAO.getThisOrThatService() und arbeiten es in der Regel.
Welche design-patterns werden verwendet, wenn die Integration von spring mit vaadin/gwt?
Einer leichten Abweichung, dass die schon oben genannten. Es funktioniert für mich und ist sehr einfach ist, so bin ich Entsendung es hier.
Ich habe Folgendes in web.xml und verwendet werden eine genaue Klassenpfad Verweis auf eine Abhängigkeit der spring-Kontext (ändern Sie den Pfad entsprechend Ihren Anforderungen):
Oben davon ausgegangen, dass Sie Hinzugefügt haben, spring-web, um Ihre pom.xml, so sicher sein, das zu tun. Sie müssen auch die servlet-api. So fügen Sie das folgende zu Ihrem pom, passen die Versionen, um Ihre Bedürfnisse anzupassen:
Nun erstellen Sie die folgende Klasse:
Und jetzt erstellen Sie Ihre DAO-Klasse (als suggeted in einem früheren post):
Schließlich, sicher sein, zu initialisieren, die DAO, die Sie jetzt verwenden in verschiedenen view-Klassen. Dieser wird bei der Initialisierung geschehen, in welcher Klasse Sie haben erweiterte Anwendung, wie unten gezeigt:
Den de-facto-Methode in diesen Tagen ist auf der offiziellen Vaadin Spring integration library. Das macht die UI-Klassen, Spring managed beans und bietet praktische Vaadin Verwandte Bereiche. Dann können Sie entscheiden, basierend auf Ihren Anforderungen, wie viele Ihrer Helfer-Klassen in UI-code, den Sie möchten, um Spring beans. Zumindest in Erwägung ziehen, z.B. alle Ansichten der Frühling es geschafft.
starten.Frühling.io-Dienst enthält eine option zum hinzufügen von relevanten Vaadin Spring-Abhängigkeiten, dann erstellen Sie einfach UI-Klasse und mit Anmerkungen versehen es mit @SpringUI annotation. Keine Notwendigkeit zu schaffen, VaadinServlet getrennt.