Die Java EE Plattform hat sich in der server-seitigen Anwendungsentwicklung mit Java durchgesetzt. Doch dieses Standardmodell basiert auf den Enterprise JavaBeans, die einen schwergewichtigten Ansatz darstellen.
Mit dem Spring Framework gibt es jetzt eine so genannte "leichtgewichtige" Alternative.
Hierbei werden ausschließlich POJO (Plain Old Java Object) Objekte verwendet und die verwendeten Dienste der Java EE Plattform wie z.B. der Transaktionsdienst nur deskriptiv konfiguriert.
Der Vorteil liegt in der einfachen Entwicklung sowie der robusten Testbarkeit der Anwendung.
Einsatzmöglichkeiten des Spring Frameworks
Das Spring Framework
Tool Unterstützung für die Anwendungsentwicklung
Spring AOP
Spring und JDBC
Testen mit Spring
Spring und Java Standards
Standardsoftware in der Versicherungsbranche - Betrachtung eines Paradigmenwe...
Das Java-Spring-Framework in der Praxis
1. g GFU Cyrus AG
Ihr Partner für IT Schulung
"Semicolon" Vortragsreihe bei der GFU
Vortrag am Dienstag, 12. Mai 2009
Thema
Das Java Spring-Framework in der Praxis
Einführung
Peter Hecker, GFU Cyrus AG
Vortrag
Dipl. Inform. Torsten Friebe
2. Disclaimer
Dieses Folienset ist nicht zum
Selbststudium geeignet!
Bitte konsultieren Sie die Literatur-
und Referenzliste am Ende der
Foliensammlung für Verweise zu
Referenzhandbüchern und weiteren
Informationsquellen!
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 1
4. Wer spricht zu Spring?
● Torsten Friebe
● GFU-Trainer seit 2006
● selbständiger IT-Berater seit 1997
● Schwerpunkt: Architekturen mit Java
● Projekterfahrung mit Spring seit 2005
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 4
5. Was gibt’s zu sehen?
● Folien (ca. 42 Minuten)
– Ideen zu sauberen Code
– Spring Framework
● Live Demo (ca. 10 Minuten)
– mitein bisschen Java Code (frisch!)
– und XML-Gemüse
– angerichtet mit Eclipse, JUnit und Java
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 5
10. ... doch war das das Ziel?
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 10
11. Der Guru sagt:
Das V-Modell löst alle Probleme
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 11
12. Was macht Projekte erfolgreich?
• Kriterien für das Produkt:
– erfüllt den Zweck
– billig in der Herstellung
– leicht zu warten
– möglichst fehlerfrei
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 12
21. Sauberer Code
• Lesbare API
• Aussagekräftige Namen für Klassen,
Methoden, Attribute
• gutes Fehler-Handling
• keine Verschleierung der
Problemstellung und -domäne
• Klarer Kontext
• Unit-Tests sind vorhanden
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 21
22. Warum testen?
• „It is professionally irresponsible
– to not write tests
– to use the most cumbersome tools“
– to write unit tests without asserts!
Quelle: Neal Ford, http://www.nealford.com
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 22
23. Party time it's a Spring-Break
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 23
24. Spring und ...
Software-
Entwicklung mit
Java Enterprise
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 24
25. Probleme bei der Java SE/EE
Entwicklung
● Zu starke Abhängigkeit vom Container
● JEE-Anwendung insb. EJB's sind
schwer zu testen
● Verstoß gegen OO-Paradigma -
gerade bei EJB 2.x
● Zu viele JEE spezifische Idiome
● Zu komplex und viel zu teuer
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 25
26. „J2EE-Development without EJB“
● Focus auf fachliche Anforderungen
● Elegantes OO Design das
Wiederverwendung erlaubt
– Arbeiten mit Domain Objekten
● Leichte Testbarkeit der Anwendung
● Steigerung der Produktivität
● Einfachheit
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 26
27. Spring – DAS JEE Framework?
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 27
28. Anti-Pattern: Silver Bullet
„A silver bullet is a method to kill
mythical creatures such as
werewolves or a metaphor for any
solution of extreme effectiveness.“
(aus Wikipedia.org)
siehe auch Anti-Pattern
„Golden Hammer“
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 28
29. Und was kann Spring?
● Vereinfachte und vereinheitlichte API-
Schicht über viele Java-SE-APIs,
Java-EE-APIs und Open-Source-
Frameworks
● Aufbau von Objektnetzen mit
Dependency Injection (DI)
● Unterstützung für aspektorientierte
Programmierung (AOP)
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 29
30. Einsatzbereiche von Spring
● Enterprise Anwendungen basierend
auf POJOs (Plain Old Java Objects)
– Persistenzmit ORM oder nativen JDBC
– Webanwendungen mit Spring MVC und
WebFlow
– Web Services mit Spring Web Services
– u.v.m.
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 30
31. Ursprung und Verfügbarkeit
● Gegründet 2003 von Rod Johnson
(Version 1.0 wurde 2004 publiziert)
● Spring wird heute von SpringSource Inc.
entwickelt
● Ist Open-Source (Apache License 2.0)
und kann kostenfrei eingesetzt werden
● Download unter:
http://www.springframework.org/
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 31
32. Module des Spring Frameworks
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 32
33. Inversion of Control (IoC)
● IoC Paradigma beschreibt die
Arbeitsweise von Frameworks
● Nicht die Anwendung steuert den
Kontrollfluss, sondern das Framework
● Beispiel in Java sind Listener
● Sogenanntes „Hollywood-Prinzip“:
"don't call us, we'll call you"
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 33
34. Dependency Injection (DI)
● Ist ein Entwurfsmuster („Fabrik“)
● Dient zur Erzeugung von
Objektnetzen
● Überträgt die Verantwortung für das
Erzeugen von Objekten an das
Framework
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 34
35. IoC und Formen der DI
Inversion of Control
Framework verwaltet
Lebenszyklus der Objekte
Dependency Lookup Dependency Injection
Erzeugung der Objekte durch Objekte werden über Sprach-Level
Container-spezifische API Abhängigkeiten erzeugt
Setter Injection Constructor Injection
Objekte werden JavaBean Objekte werden über
Eigenschaften erzeugt Konstruktor-Argumente erzeugt
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 35
36. Spring Konfigurationsdatei
● Beschreibt das Objektnetz
● Beinhaltet ganz normale Java Objekte
(POJOs)
● Die Objekte heissen „Spring-Beans“
● Jedes Spring-Bean hat einen Namen
bzw. eine ID
– undman kann diesem einen Wert oder
eine Referenz zuweisen
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 36
37. Singleton-Pattern
● Alle Spring-Beans sind Singletons
● Konsequenzen:
– Methoden müssen Thread-Safe sein
– Geschäftsobjekte sollten nicht über die
Spring Konfiguration erzeugt werden
– Der Scope „Prototype“ erzeugt mehrere
Instanzen eines Spring-Beans
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 37
40. Persistenz mit Spring
● Template und DaoSupport für:
– JDBC
– iBATIS
– Hibernate
– JPA – Java Persistence API (EJB 3.0)
– JDO – Java Data Objects
– Oracle TopLink
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 40
41. JDBC Template
● Die JdbcTemplate-Klasse vereinfacht
den Datenbankzugriff mittels JDBC
– Keine Programmierung von
try/catch/finally nötig
– Vereinheitlichte SQLExceptions
– Austauschbare Datenquellen
(javax.sql.DataSource)
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 41
42. Vorteile des JDBC Templates
Macht Benutzung von JDBC deutlich einfacher
Wandelt Exceptions in RuntimeExceptions
um
Isoliert vom Rest von Spring nutzbar (spring-
jdbc.jar)
Verwenden von:
RowMapper oder
ResultSetExtractor in query Methoden
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 42
43. Welche Technologie für den
Datenbankzugriff?
● JDBC für
– Stored Procedures
– Optimierte Massenabfragen
● iBATIS für
– Datenbank-zentrierte Systeme
● O/R Mapper wie Hibernate/JPA für
– Komplexe Datenmodelle
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 43
44. Spring und ...
AOP
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 44
45. AOP
Aspektorientierte Programmierung
Konzept für Cross-Cutting Concerns
DRY-Prinzip: „Don't repeat yourself“
Kernbegriffe:
Pointcut, Join point, Advice, Advisor,...
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 45
46. AOP Kernbegriffe
Aspect:
Modularisierung eines Cross-Cutting
Concerns
Cross-Cutting Concern:
Sind querschnittliche Belange einer
Software wie z.B. Logging, Tracing,
Security und Fehlerbehandlung
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 46
47. AOP Kernbegriffe
Join point:
Ein Punkt während der
Programmausführung, z.B. Aufruf
einer Methode
Pointcut:
Ist eine Beschreibung (Muster) für
einen Join point, z.B.:
@Pointcut("execution(public *
*(..))")
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 47
48. AOP Kernbegriffe
Advice:
Aktion die zu einem Join point
ausgeführt wird
Advisor:
Representiert einen Aspekt durch das
Advice und den Pointcut.
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 48
49. AOP Kernbegriffe
Introduction:
Das Einfügen von Methoden oder
Feldern in eine Klasse
Weaving:
Zusammenführen (einweben) von
Aspekten in bestehenden
Programmcode
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 49
50. Spring AOP
Basiert auf Dynamic Proxies
Einsatz u.a. bei
– Tracing
– Transaktionskontrolle
– Security
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 50
51. Spring und AspectJ
● Spring 2.0 unterstützt AspectJ-Syntax
● Aspekte können über @Aspect-
Annotation markiert werden
● Konfiguration mit <aop:*/> in der
Spring-Konfigurationsdatei
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 51
52. Transaktionsmanagement
● Spring unterstützt deklarative
Transaktionssteuerung
● Verwendet Spring-AOP –
TransactionInterceptor
● ermöglicht hohe Flexibilität, z.B.
Standalone-Betrieb oder Ablauf im
J2EE-Container
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 52
53. Spring Transaktionsmanager
● Abstraktion von API's für
Transaktionen in Java
● Spring bietet Implementierungen von
PlatformTransactionManager für
– JDBC
– ORM-Frameworks wie z.B. Hibernate
– JMS, JCA, JTA
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 53
54. Spring und ...
Web
Anwendungen
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 54
55. Model-View-Controller Pattern
Web-Client
Darstellung Umwandlung
erzeugen der Parameter
<<Präsentationsschicht>> <<Geschäftslogikschicht>>
View Controller
<<Datenschicht>>
Model
<<Web-Container>>
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 55
56. Spring MVC
● Implementierung von MVC2
● Management von Web Komponenten
(z.B. wie das Controller-Servlet)
● Request Routing zu Handlern
● Data Binding und Validierung
● Testbarkeit von Web Komponenten
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 56
57. Spring Web Flow
● Spring Web Flow ergänzt Spring MVC
– PageFlow Management
– Management von conversational state
● Anwendungsgebiete:
– Komplexe zustandsbehafte Seiten
Abfolgen
– Kontrollierte Navigation
– Flow Historie
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 57
59. Welche Technologie für die
Webentwicklung?
● Spring MVC für
– Einfache Web-Anwendungen
● Spring WebFlow für
– Komplexere,
statusbehaftete
Anwendungen mit Seiten-Navigation
● Spring und JSF für
– Web-Anwendungen mit UI-Komponenten
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 59
60. Spring und ...
Web Services
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 60
61. Spring und Web Services
● Spring Framework und Spring Web
Services
● Spring Remoting
● Spring mit Apache CXF (Celtix+XFire)
● Spring und Apache Axis / Axis2
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 61
64. Ausblick auf Spring 3.0
Unterstützung von Java SE >=1.5
mehr Annotationen aus
JSR 220 (EJB 3.0)
JSR 250 (Common Annotations)
JSR 299 (Web Beans)
RESTful im Web
Expression Language
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 64
67. Fazit
● Leichte Testbarkeit von Code
● Programmierung gegen Interfaces
● Einfachere Nutzung von API's
● Code weitgehend unabhängig vom
Spring Framework
● Keine Zwänge: Man muss nicht alles
von Spring nutzen
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 67
68. Grüne Welle für Spring?
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 68
69. Die Schattenseiten
● Spring ist kein Standard und wird
wahrscheinlich nie Standard werden
● noch Open-Source, aber wie geht es
mit SpringSource Inc. weiter?
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 69
71. Glue Code
● Beinhaltet keine
Funktionalität
● Klebt verschiedene
Bibliotheken
zusammen
● Integriert andere
Systeme
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 71
74. Wie baue ich eine Stadt?
Quelle: CodeCity
http://www.inf.unisi.ch/phd/wettel/codecity.html
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 74
75. Das Spring Framework und ...
das
Seminar-Angebot
der
GFU Cyrus AG
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 75
76. Spring Seminar bei der GFU
Erstes Seminar Mai 2007
seitdem 6 offene Seminare mit
35 Teilnehmern
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 76
77. GFU Seminar S806
● Zielgruppe:
– Java Entwickler und Architekten mit
guten Java Kenntnissen
● Agenda:
– http://www.gfu.net/seminare-schulungen-kurse/java_sk5/spring_framework_s806.html
● Dauer:
– 3 Tage
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 77
78. Weitere GFU-Seminare zu Spring
Spring kompakt
Spring und Datenbanken: Persistenz
mit JDBC, Hibernate, JPA und iBatis
Spring im Web mit WebFlow und JSF
Web Services mit Spring
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 78
79. Fit durch den Frühling mit ...
je 1 Tropfen:
TDD
OOP
IoC + DI
AOP
... führt zu
Wohlbefinden
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 79
80. Und zum Schluss ...
F&A
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 80
81. Literatur [1]
[BHSS06] Hibernate/Persistenz in Java-Systemen mit Hibernate 3: R.
Beeger, A. Haase, S. Roock, S. Sanitz. dpunkt.verlag. 2006. ISBN: 3-89864-
371-9.
[FTW07] Java Web Services mit Apache Axis2: Thilo Frotscher, Marc Teufel,
Dapeng Wang. Entwickler.Press. 2007. ISBN: 978-3-935042-81-9.
[HM05] Pro Spring: From Professional to Expert: Rob Harrop, Jan
Machacek. APress. 2005. ISBN: 1590594614.
[Jo02] Expert One-on-one J2EE Design and Development: Rod
Johnson. Wiley & Sons. 2002. ISBN: 0764543857.
[JH04] Expert One-on-One – J2EE Development without EJB: Rod
Johnson, Jürgen Höller. Hungry Minds Inc,U.S. 2004. ISBN:
0764558315.
[JHA05] Professional Java Development with the Spring Framework: Rod
Johnson, Jürgen Höller, Alef Arendsen. Wiley & Sons. 2005. ISBN:
0764574833.
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 81
82. Literatur [2]
[LS07] Building Spring 2 Enterprise Applications: Seth Ladd, Bram Smeets.
APress. 2007. ISBN: 1590599187.
[LD06] Expert Spring MVC and Web Flow: Seth Ladd, Darren Davison,
Steven Devijver. APress. 2006. ISBN: 159059584X.
[LR06] J2EE und JBoss. Verteilte Enterprise Applikationen auf der Basis
von J2EE, JBoss & Eclipse: T. Langner, D. Reiberg. Hanser Verlag. 2006.
ISBN: 3-446-40508-9.
[NSch05] Java und XML: Stephan Niedermeier, Michael Scholz. Galileo
Press. 2005. ISBN: 3898426467.
[Ull07] Java ist auch eine Insel: Christian Ullenboom. Galileo Computing.
ISBN: 3-89842-747-1. http://www.galileocomputing.de/1082?GPP=opjV.
[WBFT04] Java Web Services mit Apache Axis: Dapeng Wang
(Herausgeber), Thomas Bayer, Thilo Frotscher, Marc Teufel.
Entwickler.Press. 2004. ISBN: 3935042574.
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 82
83. Literatur [3]
[Walls07] Spring im Einsatz: Craig Walls. Hanser Verlag. 2.Aufl. 2008.
ISBN: 978-3-446-41240-8.
[Wolff07] Spring 2. Framework für die Java-Entwicklung: Eberhard
Wolff. Dpunkt Verlag. 2007. ISBN: 978-3-89864-465-5.
[ZLMG08] Spring 2.5: Eine pragmatische Einführung: Alfred Zeitner,
Birgit Linner, Martin Maier, Thorsten Göckeler .Addison-Wesley. 2008.
ISBN: 978-3827326225.
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 83
84. Referenzen [1]
[Spring] Spring Framework:
http://www.springframework.org/
[SpringSec] Spring Security (ehemals Acegi):
http://static.springsource.org/spring-security/
[SpringWS] Spring Web Services:
http://www.springframework.org/spring-ws
[SpringIDE] Spring IDE:
http://springide.org/
[SpringSource] SpringSource Inc. ehemals Interfaces21:
http://www.springsource.com/
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 84
88. Referenzen [5]
[NFord] Neal Ford:
http://www.nealford.com
[New06] Ted Neward „The Vietnam of Computer Science“:
http://blogs.tedneward.com/2006/06/26/The+Vietnam+Of+Computer+Science.aspx
[SAmb] Scott Ambler:
http://www.ambysoft.com/
[Wlo08] Nils Wloka „Dependency Injection für Geschäftsobjekte“:
http://87.230.78.21:8080/pages/viewpageattachments.action?pageId=1179684
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 88
89. Kontakt & Lizenz
Autor:
Torsten Friebe
mailto:tfriebe@gmx.net
Dieses Werk ist unter der creative commons
Lizenz veröffentlicht.
Inhalt darf vervielfältigt und
verbreitet werden Keine kommerzielle Nutzung
Weitergabe nur unter
Bearbeitung ist erlaubt
gleichen Bedingungen
Weitere Informationen unter:
http://creativecommons.org/licenses/by-nc-sa/3.0/deed.de
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 89