© Excellent backgrounds/Shutterstock.com
Java Magazin
Integration mit Spring, Hibernate, JPA und anderen

Tapestry als Integrationsplattform

In einer Welt von hunderten Open-Source-Bibliotheken ist es eine der wichtigsten Anforderungen an ein Framework geworden, mit anderen integrierbar zu sein. Ein Vorreiter auf diesem Gebiet ist sicherlich das Spring Framework, das eine Integration mit gefühlt jeder Bibliothek und jedem anderen Framework ermöglicht. Tapestry bietet aufgrund des integrierten IoC-Containers ähnliche Flexibilität und kann somit auch sehr einfach andere Bibliotheken integrieren.

Christian Köberl


In diesem letzten Teil der Tapestry-Serie wollen wir einen Blick auf die Integration von Tapestry mit anderen Frameworks und Bibliotheken werfen. Etwas genauer wird die Spring-, Hibernate- und JPA-Integration vorgestellt. Zum Schluss wollen wir noch einen Blick auf Best Practices werfen, die im Laufe von Projekten gesammelt wurden.

ArtikelserieTeil 1: Überblick und Konzepte, Events, InternationalisierungTeil 2: CRUD mit BeanEditor und GridTeil 3: Komponenten, Ajax und JavaScriptTeil 4: Integration mit anderen Frameworks, Best Practices

Spring und andere IoCs

Die Spring-Integration in Tapestry ist sehr gut gelungen. Kein Wunder, kommt doch bei vielen Projekten Spring im Backend zum Einsatz. Will man Spring gemeinsam mit Tapestry benutzen, so muss man zusätzlich das Modul tapestry-spring in der passenden Version einbinden und den Servlet-Filter im web.xml anpassen auf: org.apache.tapestry5.spring.TapestrySpringFilter. Der Rest funktioniert dann wie in der Spring-Dokumentation beschrieben: Man kann z. B. die Spring-Konfigurationsdatei per Servlet-Kontextparameter contextConfigLocation angeben. Dann wird beim Start der Webapplikation zusätzlich zum Tapestry-IoC-Container auch der Spring ApplicationContext initialisiert. In Spring definierte Beans können nun einfach per @Inject in Tapestry-Komponenten und -Seiten eingefügt werden. Dabei wird die Bean per Typ aus dem Spring-Container geholt. Das funktioniert natürlich nur für Beans, die es nur einmal im Container gibt. Für andere Beans, wie z. B. Beans mit Session-Scope kann man sich den ApplicationContext injizieren lassen und dann daraus die entsprechende Bean holen. Seit der Version 5.2 kann man mit der Spring-Integration auch umgekehrt Tapestry Services im Spring-Container verwenden und einfach in Beans injizieren. Dafür muss man aber die Services zusätzlich mit der Annotation @Inject versehen:

public class MyBean { @Inject @Autowired private MyService myService;...}

Für andere IoC-Container gibt es keine offizielle Unterstützung von Tapestry, jedoch ist diese üblicherweise mit wenigen Klassen leicht zu implementieren. Es gibt auch bereits Integrationen als Tapestry-Erweiterungen für Google Guice [1] und CDI [2].

Hibernate

Die JPA-Integration in Tapestry ist mehr oder weniger eine Kopie der Hibernate-Integration (nur entsprechend mit EntityManagerFactory/EntityManager statt SessionFactory/Session), deshalb beginne ich mit der Beschreibung der Hibernate-Integration und erkläre anschließend die Unterschiede bei...

Java Magazin
Integration mit Spring, Hibernate, JPA und anderen

Tapestry als Integrationsplattform

In einer Welt von hunderten Open-Source-Bibliotheken ist es eine der wichtigsten Anforderungen an ein Framework geworden, mit anderen integrierbar zu sein. Ein Vorreiter auf diesem Gebiet ist sicherlich das Spring Framework, das eine Integration mit gefühlt jeder Bibliothek und jedem anderen Framework ermöglicht. Tapestry bietet aufgrund des integrierten IoC-Containers ähnliche Flexibilität und kann somit auch sehr einfach andere Bibliotheken integrieren.

Christian Köberl


In diesem letzten Teil der Tapestry-Serie wollen wir einen Blick auf die Integration von Tapestry mit anderen Frameworks und Bibliotheken werfen. Etwas genauer wird die Spring-, Hibernate- und JPA-Integration vorgestellt. Zum Schluss wollen wir noch einen Blick auf Best Practices werfen, die im Laufe von Projekten gesammelt wurden.

ArtikelserieTeil 1: Überblick und Konzepte, Events, InternationalisierungTeil 2: CRUD mit BeanEditor und GridTeil 3: Komponenten, Ajax und JavaScriptTeil 4: Integration mit anderen Frameworks, Best Practices

Spring und andere IoCs

Die Spring-Integration in Tapestry ist sehr gut gelungen. Kein Wunder, kommt doch bei vielen Projekten Spring im Backend zum Einsatz. Will man Spring gemeinsam mit Tapestry benutzen, so muss man zusätzlich das Modul tapestry-spring in der passenden Version einbinden und den Servlet-Filter im web.xml anpassen auf: org.apache.tapestry5.spring.TapestrySpringFilter. Der Rest funktioniert dann wie in der Spring-Dokumentation beschrieben: Man kann z. B. die Spring-Konfigurationsdatei per Servlet-Kontextparameter contextConfigLocation angeben. Dann wird beim Start der Webapplikation zusätzlich zum Tapestry-IoC-Container auch der Spring ApplicationContext initialisiert. In Spring definierte Beans können nun einfach per @Inject in Tapestry-Komponenten und -Seiten eingefügt werden. Dabei wird die Bean per Typ aus dem Spring-Container geholt. Das funktioniert natürlich nur für Beans, die es nur einmal im Container gibt. Für andere Beans, wie z. B. Beans mit Session-Scope kann man sich den ApplicationContext injizieren lassen und dann daraus die entsprechende Bean holen. Seit der Version 5.2 kann man mit der Spring-Integration auch umgekehrt Tapestry Services im Spring-Container verwenden und einfach in Beans injizieren. Dafür muss man aber die Services zusätzlich mit der Annotation @Inject versehen:

public class MyBean { @Inject @Autowired private MyService myService;...}

Für andere IoC-Container gibt es keine offizielle Unterstützung von Tapestry, jedoch ist diese üblicherweise mit wenigen Klassen leicht zu implementieren. Es gibt auch bereits Integrationen als Tapestry-Erweiterungen für Google Guice [1] und CDI [2].

Hibernate

Die JPA-Integration in Tapestry ist mehr oder weniger eine Kopie der Hibernate-Integration (nur entsprechend mit EntityManagerFactory/EntityManager statt SessionFactory/Session), deshalb beginne ich mit der Beschreibung der Hibernate-Integration und erkläre anschließend die Unterschiede bei...

Neugierig geworden?


    
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang