SlideShare ist ein Scribd-Unternehmen logo
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
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
Das Spring Framework




  (c) 2007-2009 / Torsten Friebe / GFU Cyrus AG   3
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
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
Auf geht's...




(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG   6
Jedes Projekt ist eine Reise




     (c) 2007-2009 / Torsten Friebe / GFU Cyrus AG   7
im goldenen Dreieck




 (c) 2007-2009 / Torsten Friebe / GFU Cyrus AG   8
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG   9
... doch war das das Ziel?




    (c) 2007-2009 / Torsten Friebe / GFU Cyrus AG   10
Der Guru sagt:
Das V-Modell löst alle Probleme




       (c) 2007-2009 / Torsten Friebe / GFU Cyrus AG   11
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
Erfolgreiche Produkte




  (c) 2007-2009 / Torsten Friebe / GFU Cyrus AG   13
Falsche Anforderungen?




   (c) 2007-2009 / Torsten Friebe / GFU Cyrus AG   14
Anforderungsmanagment in
               der Praxis
     (c) 2007-2009 / Torsten Friebe / GFU Cyrus AG   15
Kommunikation




(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG   16
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG   17
Big Design Up Front




Quelle: Neal Ford, http://www.nealford.com
                     (c) 2007-2009 / Torsten Friebe / GFU Cyrus AG   18
Clean Code




(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG   19
(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG   20
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
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
Party time it's a Spring-Break




      (c) 2007-2009 / Torsten Friebe / GFU Cyrus AG   23
Spring und ...



   Software-
Entwicklung mit
Java Enterprise
  (c) 2007-2009 / Torsten Friebe / GFU Cyrus AG   24
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
„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
Spring – DAS JEE Framework?




      (c) 2007-2009 / Torsten Friebe / GFU Cyrus AG   27
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
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
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
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
Module des Spring Frameworks




      (c) 2007-2009 / Torsten Friebe / GFU Cyrus AG   32
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
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
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
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
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
Spring Konfiguration

<beans>
...                                            Spring
  <bean id=“pojo-1“ ...>                      Container         create   pojo-1
     <... ref=“pojo-2“/>
  </bean>
  <bean id=“pojo-2“ ...>                                        create
     <... ref=“pojo-3“/>          getBean(„pojo-1“)
  </bean>
  <bean id=“pojo-3“ ...>
    <... value=“Hello!“/>                                       create   pojo-2
  </bean>
...                                           Application
</beans>



                                                                         pojo-3



                (c) 2007-2009 / Torsten Friebe / GFU Cyrus AG                     38
Spring und ...




Persistenz

(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG   39
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
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
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
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
Spring und ...




             AOP

(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG   44
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
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
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
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
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
Spring AOP

Basiert auf Dynamic Proxies
Einsatz u.a. bei


    – Tracing
    – Transaktionskontrolle
    – Security




             (c) 2007-2009 / Torsten Friebe / GFU Cyrus AG   50
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
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
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
Spring und ...




   Web
Anwendungen
 (c) 2007-2009 / Torsten Friebe / GFU Cyrus AG   54
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
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
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
Integration anderer View-
      Technologien




    (c) 2007-2009 / Torsten Friebe / GFU Cyrus AG   58
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
Spring und ...




Web Services

 (c) 2007-2009 / Torsten Friebe / GFU Cyrus AG   60
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
Weitere Spring Features




   (c) 2007-2009 / Torsten Friebe / GFU Cyrus AG   62
Typische Architektur einer
   Spring-Anwendung




    (c) 2007-2009 / Torsten Friebe / GFU Cyrus AG   63
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
Demo




(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG   65
Money, Money, Money




  (c) 2007-2009 / Torsten Friebe / GFU Cyrus AG   66
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
Grüne Welle für Spring?




   (c) 2007-2009 / Torsten Friebe / GFU Cyrus AG   68
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
Die Folgen




(c) 2007-2009 / Torsten Friebe / GFU Cyrus AG   70
Glue Code

●   Beinhaltet keine
    Funktionalität
●   Klebt verschiedene
    Bibliotheken
    zusammen
●   Integriert andere
    Systeme



              (c) 2007-2009 / Torsten Friebe / GFU Cyrus AG   71
Code Cleaner

●   Überflüssigen Code
    entfernen
●   Refactorings
    konsquent
    durchführen
●   Duplikate entfernen
●   Zyklische
    Abhängigkeiten
    vermeiden
              (c) 2007-2009 / Torsten Friebe / GFU Cyrus AG   72
Anti-Pattern: Big Ball of Mud




     (c) 2007-2009 / Torsten Friebe / GFU Cyrus AG   73
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
Das Spring Framework und ...


     das
Seminar-Angebot
      der
 GFU Cyrus AG
      (c) 2007-2009 / Torsten Friebe / GFU Cyrus AG   75
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
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
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
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
Und zum Schluss ...




             F&A

 (c) 2007-2009 / Torsten Friebe / GFU Cyrus AG   80
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
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
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
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
Referenzen [2]

[Hib] Hibernate:
http://www.hibernate.org/
[IBAT] IBATIS Framework:

http://ibatis.apache.org/
[JDO] JDO:

http://java.sun.com/products/jdo/
[JPA] JPA:

http://java.sun.com/javaee/technologies/persistence.jsp
[ELINK] Eclipse Link:

http://www.eclipse.org/eclipselink/




                (c) 2007-2009 / Torsten Friebe / GFU Cyrus AG   85
Referenzen [3]
[Eclipse] Eclipse:
http://www.eclipse.org
[Maven] Maven:

http://maven.apache.org
[Junit] JUnit:

http://www.junit.org
[TSS] TheServerSide:

http://www.theserverside.com/
[WORDL] Wordl (World Cloud):

http://www.wordle.net
[CCIT] CodeCity:

http://www.inf.unisi.ch/phd/wettel/codecity.html


                 (c) 2007-2009 / Torsten Friebe / GFU Cyrus AG   86
Referenzen [4]
JSF:
https://javaserverfaces.dev.java.net/
Apache MyFaces:

http://myfaces.apache.org/
Apache CXF:

http://cxf.apache.org/
Apache Axis2:

http://ws.apache.org/axis2/




                 (c) 2007-2009 / Torsten Friebe / GFU Cyrus AG   87
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
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

Weitere ähnliche Inhalte

Ähnlich wie Das Java-Spring-Framework in der Praxis

CDI
CDICDI
Tech Talk Spring Framework
Tech Talk Spring FrameworkTech Talk Spring Framework
Tech Talk Spring FrameworkJens Rühmkorf
 
Gradle - Beginner's Workshop (german)
Gradle - Beginner's Workshop (german)Gradle - Beginner's Workshop (german)
Gradle - Beginner's Workshop (german)
Joachim Baumann
 
Testing TYPO3 Flow Applications with Behat
Testing TYPO3 Flow Applications with BehatTesting TYPO3 Flow Applications with Behat
Testing TYPO3 Flow Applications with Behat
Markus Goldbeck
 
Dnug35 ak-dev.071111-cookbook
Dnug35 ak-dev.071111-cookbookDnug35 ak-dev.071111-cookbook
Dnug35 ak-dev.071111-cookbook
Ulrich Krause
 
Neue Features der Java EE 6
Neue Features der Java EE 6Neue Features der Java EE 6
Neue Features der Java EE 6
GFU Cyrus AG
 
EnterJS 2015 - JavaScript von Morgen schon heute
EnterJS 2015 - JavaScript von Morgen schon heuteEnterJS 2015 - JavaScript von Morgen schon heute
EnterJS 2015 - JavaScript von Morgen schon heute
Philipp Burgmer
 
Ringvorlesung ITmitte.de : Vortrag der FIO SYSTEMS AG über Unit Tests und TDD
Ringvorlesung ITmitte.de : Vortrag der FIO SYSTEMS AG über Unit Tests und TDDRingvorlesung ITmitte.de : Vortrag der FIO SYSTEMS AG über Unit Tests und TDD
Ringvorlesung ITmitte.de : Vortrag der FIO SYSTEMS AG über Unit Tests und TDD
Community ITmitte.de
 
Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011)
Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011)Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011)
Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011)
Michael Kurz
 
JavaScript für Java-Entwickler W-JAX 2013
JavaScript für Java-Entwickler W-JAX 2013JavaScript für Java-Entwickler W-JAX 2013
JavaScript für Java-Entwickler W-JAX 2013Oliver Zeigermann
 
Elemente Websolutions - FLOW3 Überblick
Elemente Websolutions - FLOW3 ÜberblickElemente Websolutions - FLOW3 Überblick
Elemente Websolutions - FLOW3 Überblick
elemente websolutions
 
MongoDB Munich 2012: Spring Data MongoDB
MongoDB Munich 2012: Spring Data MongoDBMongoDB Munich 2012: Spring Data MongoDB
MongoDB Munich 2012: Spring Data MongoDB
Tobias Trelle
 
AndroMDA - Einführung in eine Open Source Model Driven Architecture Lösung
AndroMDA - Einführung in eine Open Source Model Driven Architecture LösungAndroMDA - Einführung in eine Open Source Model Driven Architecture Lösung
AndroMDA - Einführung in eine Open Source Model Driven Architecture Lösung
Eduard Hildebrandt
 
Vortragsreihe Dortmund: Unified Development Environments
Vortragsreihe Dortmund: Unified Development EnvironmentsVortragsreihe Dortmund: Unified Development Environments
Vortragsreihe Dortmund: Unified Development Environments
Thorsten Kamann
 
TDD für Testmuffel
TDD für TestmuffelTDD für Testmuffel
TDD für Testmuffel
Hendrik Lösch
 
SokaHH: Testen von Rich-Web-UI (German)
SokaHH: Testen von Rich-Web-UI (German)SokaHH: Testen von Rich-Web-UI (German)
SokaHH: Testen von Rich-Web-UI (German)
Mark Michaelis
 
Design OOA OOD
Design OOA OODDesign OOA OOD
Design OOA OOD
Jeffrey Groneberg
 
Icinga 2009 at Nagios Workshop
Icinga 2009 at Nagios WorkshopIcinga 2009 at Nagios Workshop
Icinga 2009 at Nagios Workshop
Icinga
 
DOAG SIG Security 2014 in Hamburg: Enterprise User Security for DBAs #eus4dbas
DOAG SIG Security 2014 in Hamburg: Enterprise User Security for DBAs #eus4dbasDOAG SIG Security 2014 in Hamburg: Enterprise User Security for DBAs #eus4dbas
DOAG SIG Security 2014 in Hamburg: Enterprise User Security for DBAs #eus4dbas
Carsten Muetzlitz
 
OSGi: Tools und Entwicklungsprozesse in OSGi Projekten
OSGi: Tools und Entwicklungsprozesse in OSGi ProjektenOSGi: Tools und Entwicklungsprozesse in OSGi Projekten
OSGi: Tools und Entwicklungsprozesse in OSGi Projekten
IKS Gesellschaft für Informations- und Kommunikationssysteme mbH
 

Ähnlich wie Das Java-Spring-Framework in der Praxis (20)

CDI
CDICDI
CDI
 
Tech Talk Spring Framework
Tech Talk Spring FrameworkTech Talk Spring Framework
Tech Talk Spring Framework
 
Gradle - Beginner's Workshop (german)
Gradle - Beginner's Workshop (german)Gradle - Beginner's Workshop (german)
Gradle - Beginner's Workshop (german)
 
Testing TYPO3 Flow Applications with Behat
Testing TYPO3 Flow Applications with BehatTesting TYPO3 Flow Applications with Behat
Testing TYPO3 Flow Applications with Behat
 
Dnug35 ak-dev.071111-cookbook
Dnug35 ak-dev.071111-cookbookDnug35 ak-dev.071111-cookbook
Dnug35 ak-dev.071111-cookbook
 
Neue Features der Java EE 6
Neue Features der Java EE 6Neue Features der Java EE 6
Neue Features der Java EE 6
 
EnterJS 2015 - JavaScript von Morgen schon heute
EnterJS 2015 - JavaScript von Morgen schon heuteEnterJS 2015 - JavaScript von Morgen schon heute
EnterJS 2015 - JavaScript von Morgen schon heute
 
Ringvorlesung ITmitte.de : Vortrag der FIO SYSTEMS AG über Unit Tests und TDD
Ringvorlesung ITmitte.de : Vortrag der FIO SYSTEMS AG über Unit Tests und TDDRingvorlesung ITmitte.de : Vortrag der FIO SYSTEMS AG über Unit Tests und TDD
Ringvorlesung ITmitte.de : Vortrag der FIO SYSTEMS AG über Unit Tests und TDD
 
Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011)
Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011)Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011)
Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011)
 
JavaScript für Java-Entwickler W-JAX 2013
JavaScript für Java-Entwickler W-JAX 2013JavaScript für Java-Entwickler W-JAX 2013
JavaScript für Java-Entwickler W-JAX 2013
 
Elemente Websolutions - FLOW3 Überblick
Elemente Websolutions - FLOW3 ÜberblickElemente Websolutions - FLOW3 Überblick
Elemente Websolutions - FLOW3 Überblick
 
MongoDB Munich 2012: Spring Data MongoDB
MongoDB Munich 2012: Spring Data MongoDBMongoDB Munich 2012: Spring Data MongoDB
MongoDB Munich 2012: Spring Data MongoDB
 
AndroMDA - Einführung in eine Open Source Model Driven Architecture Lösung
AndroMDA - Einführung in eine Open Source Model Driven Architecture LösungAndroMDA - Einführung in eine Open Source Model Driven Architecture Lösung
AndroMDA - Einführung in eine Open Source Model Driven Architecture Lösung
 
Vortragsreihe Dortmund: Unified Development Environments
Vortragsreihe Dortmund: Unified Development EnvironmentsVortragsreihe Dortmund: Unified Development Environments
Vortragsreihe Dortmund: Unified Development Environments
 
TDD für Testmuffel
TDD für TestmuffelTDD für Testmuffel
TDD für Testmuffel
 
SokaHH: Testen von Rich-Web-UI (German)
SokaHH: Testen von Rich-Web-UI (German)SokaHH: Testen von Rich-Web-UI (German)
SokaHH: Testen von Rich-Web-UI (German)
 
Design OOA OOD
Design OOA OODDesign OOA OOD
Design OOA OOD
 
Icinga 2009 at Nagios Workshop
Icinga 2009 at Nagios WorkshopIcinga 2009 at Nagios Workshop
Icinga 2009 at Nagios Workshop
 
DOAG SIG Security 2014 in Hamburg: Enterprise User Security for DBAs #eus4dbas
DOAG SIG Security 2014 in Hamburg: Enterprise User Security for DBAs #eus4dbasDOAG SIG Security 2014 in Hamburg: Enterprise User Security for DBAs #eus4dbas
DOAG SIG Security 2014 in Hamburg: Enterprise User Security for DBAs #eus4dbas
 
OSGi: Tools und Entwicklungsprozesse in OSGi Projekten
OSGi: Tools und Entwicklungsprozesse in OSGi ProjektenOSGi: Tools und Entwicklungsprozesse in OSGi Projekten
OSGi: Tools und Entwicklungsprozesse in OSGi Projekten
 

Mehr von GFU Cyrus AG

Social Media im Unternehmen
Social Media im UnternehmenSocial Media im Unternehmen
Social Media im Unternehmen
GFU Cyrus AG
 
Java Code Quality: Gute Software braucht guten Code - Regeln für verständlich...
Java Code Quality: Gute Software braucht guten Code - Regeln für verständlich...Java Code Quality: Gute Software braucht guten Code - Regeln für verständlich...
Java Code Quality: Gute Software braucht guten Code - Regeln für verständlich...
GFU Cyrus AG
 
Clean Code Developer
Clean Code DeveloperClean Code Developer
Clean Code Developer
GFU Cyrus AG
 
Cross-Apps-Entwicklung für iPhone, Android und Co.
Cross-Apps-Entwicklung für iPhone, Android und Co.Cross-Apps-Entwicklung für iPhone, Android und Co.
Cross-Apps-Entwicklung für iPhone, Android und Co.
GFU Cyrus AG
 
Softwarequalitätssicherung mit Continuous Integration Tools
Softwarequalitätssicherung mit Continuous Integration ToolsSoftwarequalitätssicherung mit Continuous Integration Tools
Softwarequalitätssicherung mit Continuous Integration Tools
GFU Cyrus AG
 
Datenschutz bei Facebook & Co. - Wie schütze ich meine persönlichen Daten im ...
Datenschutz bei Facebook & Co. - Wie schütze ich meine persönlichen Daten im ...Datenschutz bei Facebook & Co. - Wie schütze ich meine persönlichen Daten im ...
Datenschutz bei Facebook & Co. - Wie schütze ich meine persönlichen Daten im ...
GFU Cyrus AG
 
Requirements Engineering in agilen Projekten - Flexibilität ist gefordert
Requirements Engineering in agilen Projekten - Flexibilität ist gefordertRequirements Engineering in agilen Projekten - Flexibilität ist gefordert
Requirements Engineering in agilen Projekten - Flexibilität ist gefordert
GFU Cyrus AG
 
SharePoint 2010 - Was ist neu, was wird besser!
SharePoint 2010 - Was ist neu, was wird besser!SharePoint 2010 - Was ist neu, was wird besser!
SharePoint 2010 - Was ist neu, was wird besser!
GFU Cyrus AG
 
Java Persistence 2.0
Java Persistence 2.0Java Persistence 2.0
Java Persistence 2.0GFU Cyrus AG
 
Pragmatische Einführung von IT-Servicemanagement - ITIL im Unternehmen - Erfa...
Pragmatische Einführung von IT-Servicemanagement - ITIL im Unternehmen - Erfa...Pragmatische Einführung von IT-Servicemanagement - ITIL im Unternehmen - Erfa...
Pragmatische Einführung von IT-Servicemanagement - ITIL im Unternehmen - Erfa...
GFU Cyrus AG
 
Liferay Portal - ein Webportal für viele Unternehmensanforderungen
Liferay Portal - ein Webportal für viele UnternehmensanforderungenLiferay Portal - ein Webportal für viele Unternehmensanforderungen
Liferay Portal - ein Webportal für viele Unternehmensanforderungen
GFU Cyrus AG
 
PostgreSQL im Produktivbetrieb
PostgreSQL im ProduktivbetriebPostgreSQL im Produktivbetrieb
PostgreSQL im Produktivbetrieb
GFU Cyrus AG
 
Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Weba...
Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Weba...Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Weba...
Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Weba...
GFU Cyrus AG
 
Wieviel Web2.0 braucht Ihr Unternehmen?
Wieviel Web2.0 braucht Ihr Unternehmen?Wieviel Web2.0 braucht Ihr Unternehmen?
Wieviel Web2.0 braucht Ihr Unternehmen?
GFU Cyrus AG
 
Agile Geschäftsprozeßanalyse OOA/D am Beispiel einer Seminarverwaltung
Agile Geschäftsprozeßanalyse OOA/D am Beispiel einer SeminarverwaltungAgile Geschäftsprozeßanalyse OOA/D am Beispiel einer Seminarverwaltung
Agile Geschäftsprozeßanalyse OOA/D am Beispiel einer Seminarverwaltung
GFU Cyrus AG
 
Wissensmanagement bei Volkswagen
Wissensmanagement bei VolkswagenWissensmanagement bei Volkswagen
Wissensmanagement bei Volkswagen
GFU Cyrus AG
 
Professionelle Anforderungsanalyse am Beispiel einer Java-Anwendung zur Betri...
Professionelle Anforderungsanalyse am Beispiel einer Java-Anwendung zur Betri...Professionelle Anforderungsanalyse am Beispiel einer Java-Anwendung zur Betri...
Professionelle Anforderungsanalyse am Beispiel einer Java-Anwendung zur Betri...
GFU Cyrus AG
 
Grenzüberschreitende Geschäftsprozesse mit Microsoft SharePoint und BizTalk
Grenzüberschreitende Geschäftsprozesse mit Microsoft SharePoint und BizTalkGrenzüberschreitende Geschäftsprozesse mit Microsoft SharePoint und BizTalk
Grenzüberschreitende Geschäftsprozesse mit Microsoft SharePoint und BizTalk
GFU Cyrus AG
 
Projekt! - Toll - Ein Anderer Macht`s! - Voraussetzungen für eine erfolgreich...
Projekt! - Toll - Ein Anderer Macht`s! - Voraussetzungen für eine erfolgreich...Projekt! - Toll - Ein Anderer Macht`s! - Voraussetzungen für eine erfolgreich...
Projekt! - Toll - Ein Anderer Macht`s! - Voraussetzungen für eine erfolgreich...
GFU Cyrus AG
 
Standardsoftware in der Versicherungsbranche - Betrachtung eines Paradigmenwe...
Standardsoftware in der Versicherungsbranche - Betrachtung eines Paradigmenwe...Standardsoftware in der Versicherungsbranche - Betrachtung eines Paradigmenwe...
Standardsoftware in der Versicherungsbranche - Betrachtung eines Paradigmenwe...
GFU Cyrus AG
 

Mehr von GFU Cyrus AG (20)

Social Media im Unternehmen
Social Media im UnternehmenSocial Media im Unternehmen
Social Media im Unternehmen
 
Java Code Quality: Gute Software braucht guten Code - Regeln für verständlich...
Java Code Quality: Gute Software braucht guten Code - Regeln für verständlich...Java Code Quality: Gute Software braucht guten Code - Regeln für verständlich...
Java Code Quality: Gute Software braucht guten Code - Regeln für verständlich...
 
Clean Code Developer
Clean Code DeveloperClean Code Developer
Clean Code Developer
 
Cross-Apps-Entwicklung für iPhone, Android und Co.
Cross-Apps-Entwicklung für iPhone, Android und Co.Cross-Apps-Entwicklung für iPhone, Android und Co.
Cross-Apps-Entwicklung für iPhone, Android und Co.
 
Softwarequalitätssicherung mit Continuous Integration Tools
Softwarequalitätssicherung mit Continuous Integration ToolsSoftwarequalitätssicherung mit Continuous Integration Tools
Softwarequalitätssicherung mit Continuous Integration Tools
 
Datenschutz bei Facebook & Co. - Wie schütze ich meine persönlichen Daten im ...
Datenschutz bei Facebook & Co. - Wie schütze ich meine persönlichen Daten im ...Datenschutz bei Facebook & Co. - Wie schütze ich meine persönlichen Daten im ...
Datenschutz bei Facebook & Co. - Wie schütze ich meine persönlichen Daten im ...
 
Requirements Engineering in agilen Projekten - Flexibilität ist gefordert
Requirements Engineering in agilen Projekten - Flexibilität ist gefordertRequirements Engineering in agilen Projekten - Flexibilität ist gefordert
Requirements Engineering in agilen Projekten - Flexibilität ist gefordert
 
SharePoint 2010 - Was ist neu, was wird besser!
SharePoint 2010 - Was ist neu, was wird besser!SharePoint 2010 - Was ist neu, was wird besser!
SharePoint 2010 - Was ist neu, was wird besser!
 
Java Persistence 2.0
Java Persistence 2.0Java Persistence 2.0
Java Persistence 2.0
 
Pragmatische Einführung von IT-Servicemanagement - ITIL im Unternehmen - Erfa...
Pragmatische Einführung von IT-Servicemanagement - ITIL im Unternehmen - Erfa...Pragmatische Einführung von IT-Servicemanagement - ITIL im Unternehmen - Erfa...
Pragmatische Einführung von IT-Servicemanagement - ITIL im Unternehmen - Erfa...
 
Liferay Portal - ein Webportal für viele Unternehmensanforderungen
Liferay Portal - ein Webportal für viele UnternehmensanforderungenLiferay Portal - ein Webportal für viele Unternehmensanforderungen
Liferay Portal - ein Webportal für viele Unternehmensanforderungen
 
PostgreSQL im Produktivbetrieb
PostgreSQL im ProduktivbetriebPostgreSQL im Produktivbetrieb
PostgreSQL im Produktivbetrieb
 
Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Weba...
Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Weba...Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Weba...
Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Weba...
 
Wieviel Web2.0 braucht Ihr Unternehmen?
Wieviel Web2.0 braucht Ihr Unternehmen?Wieviel Web2.0 braucht Ihr Unternehmen?
Wieviel Web2.0 braucht Ihr Unternehmen?
 
Agile Geschäftsprozeßanalyse OOA/D am Beispiel einer Seminarverwaltung
Agile Geschäftsprozeßanalyse OOA/D am Beispiel einer SeminarverwaltungAgile Geschäftsprozeßanalyse OOA/D am Beispiel einer Seminarverwaltung
Agile Geschäftsprozeßanalyse OOA/D am Beispiel einer Seminarverwaltung
 
Wissensmanagement bei Volkswagen
Wissensmanagement bei VolkswagenWissensmanagement bei Volkswagen
Wissensmanagement bei Volkswagen
 
Professionelle Anforderungsanalyse am Beispiel einer Java-Anwendung zur Betri...
Professionelle Anforderungsanalyse am Beispiel einer Java-Anwendung zur Betri...Professionelle Anforderungsanalyse am Beispiel einer Java-Anwendung zur Betri...
Professionelle Anforderungsanalyse am Beispiel einer Java-Anwendung zur Betri...
 
Grenzüberschreitende Geschäftsprozesse mit Microsoft SharePoint und BizTalk
Grenzüberschreitende Geschäftsprozesse mit Microsoft SharePoint und BizTalkGrenzüberschreitende Geschäftsprozesse mit Microsoft SharePoint und BizTalk
Grenzüberschreitende Geschäftsprozesse mit Microsoft SharePoint und BizTalk
 
Projekt! - Toll - Ein Anderer Macht`s! - Voraussetzungen für eine erfolgreich...
Projekt! - Toll - Ein Anderer Macht`s! - Voraussetzungen für eine erfolgreich...Projekt! - Toll - Ein Anderer Macht`s! - Voraussetzungen für eine erfolgreich...
Projekt! - Toll - Ein Anderer Macht`s! - Voraussetzungen für eine erfolgreich...
 
Standardsoftware in der Versicherungsbranche - Betrachtung eines Paradigmenwe...
Standardsoftware in der Versicherungsbranche - Betrachtung eines Paradigmenwe...Standardsoftware in der Versicherungsbranche - Betrachtung eines Paradigmenwe...
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
  • 3. Das Spring Framework (c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 3
  • 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
  • 6. Auf geht's... (c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 6
  • 7. Jedes Projekt ist eine Reise (c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 7
  • 8. im goldenen Dreieck (c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 8
  • 9. (c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 9
  • 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
  • 13. Erfolgreiche Produkte (c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 13
  • 14. Falsche Anforderungen? (c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 14
  • 15. Anforderungsmanagment in der Praxis (c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 15
  • 16. Kommunikation (c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 16
  • 17. (c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 17
  • 18. Big Design Up Front Quelle: Neal Ford, http://www.nealford.com (c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 18
  • 19. Clean Code (c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 19
  • 20. (c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 20
  • 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
  • 38. Spring Konfiguration <beans> ... Spring <bean id=“pojo-1“ ...> Container create pojo-1 <... ref=“pojo-2“/> </bean> <bean id=“pojo-2“ ...> create <... ref=“pojo-3“/> getBean(„pojo-1“) </bean> <bean id=“pojo-3“ ...> <... value=“Hello!“/> create pojo-2 </bean> ... Application </beans> pojo-3 (c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 38
  • 39. Spring und ... Persistenz (c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 39
  • 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
  • 58. Integration anderer View- Technologien (c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 58
  • 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
  • 62. Weitere Spring Features (c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 62
  • 63. Typische Architektur einer Spring-Anwendung (c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 63
  • 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
  • 65. Demo (c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 65
  • 66. Money, Money, Money (c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 66
  • 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
  • 70. Die Folgen (c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 70
  • 71. Glue Code ● Beinhaltet keine Funktionalität ● Klebt verschiedene Bibliotheken zusammen ● Integriert andere Systeme (c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 71
  • 72. Code Cleaner ● Überflüssigen Code entfernen ● Refactorings konsquent durchführen ● Duplikate entfernen ● Zyklische Abhängigkeiten vermeiden (c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 72
  • 73. Anti-Pattern: Big Ball of Mud (c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 73
  • 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
  • 85. Referenzen [2] [Hib] Hibernate: http://www.hibernate.org/ [IBAT] IBATIS Framework: http://ibatis.apache.org/ [JDO] JDO: http://java.sun.com/products/jdo/ [JPA] JPA: http://java.sun.com/javaee/technologies/persistence.jsp [ELINK] Eclipse Link: http://www.eclipse.org/eclipselink/ (c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 85
  • 86. Referenzen [3] [Eclipse] Eclipse: http://www.eclipse.org [Maven] Maven: http://maven.apache.org [Junit] JUnit: http://www.junit.org [TSS] TheServerSide: http://www.theserverside.com/ [WORDL] Wordl (World Cloud): http://www.wordle.net [CCIT] CodeCity: http://www.inf.unisi.ch/phd/wettel/codecity.html (c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 86
  • 87. Referenzen [4] JSF: https://javaserverfaces.dev.java.net/ Apache MyFaces: http://myfaces.apache.org/ Apache CXF: http://cxf.apache.org/ Apache Axis2: http://ws.apache.org/axis2/ (c) 2007-2009 / Torsten Friebe / GFU Cyrus AG 87
  • 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