SlideShare une entreprise Scribd logo
1  sur  40
Télécharger pour lire hors ligne
Spring 2.0 –
Frühlingsgefühle für Entwickler
                    von und mit Thorsten Kamann




                                 Copyright 2006 Thorsten Kamann   1
Inhalt

 Einführung
 Konfiguration
 AOP
 Datenzugriffsschicht
 Web
 Sonstiges
     Unterstützung dynamischer Sprachen
     JMX
     Task Scheduler
     Java5 Support
 Zusammenfassung
 Links

                                           Copyright 2006 Thorsten Kamann   2
Einführung

         Copyright 2006 Thorsten Kamann   3
Einführung: Was ist Spring?

 Spring ist eine Ansammlung von API's, die die Entwicklung mit der J2EE
  vereinfacht
 Spring ist ein Dependency Injection Container
 Spring ist ein Programmiermodell für die Entwicklung
     leichtgewichtiger Komponenten
     lose gekoppelter Komponenten
     vom Framework unabhängiger Komponenten
     testbarer Komponenten
 Spring konkurriert mit keinem bestehenden Framework, bietet allerdings eine
  Integration an




                                                             Copyright 2006 Thorsten Kamann   4
Einführung: Leitsprüche

 J2EE soll einfacher zu benutzen sein
 Es ist besser gegen Interfaces zu programmieren als gegen konkrete Klassen
 JavaBeans bieten eine hervorragende Möglichkeit Anwendungen zu
  konfigurieren
 OO-Design ist wichtiger als jede Implementierungstechnologie (z.B. J2EE)
 Checked Exceptions werden in der J2EE zu häufig verwendet. Ein Framework
  sollte den Entwickler nicht zwingen Exceptions zu behandeln, da er
  wahrscheinlich nichts konkretes damit anfangen kann
 Testing ist essenziell. Ein Framework sollte dem Entwickler das Testen so
  einfach wie möglich machen




                                                            Copyright 2006 Thorsten Kamann   5
Einführung: Ziele

 Spring soll Spaß machen




 Der Anwendungscode soll nicht von Spring abhängig sein




 Spring soll nicht mit bestehenden Frameworks konkurrieren, sondern eine
  Integration anbieten (z.B. JDO, Toplink und Hibernate)



                                                           Copyright 2006 Thorsten Kamann   6
Einführung: Features

 Leichtgewichtiger Container

     Zentralisierte und automatisierte Konfiguration und Verdrahtung der
      Anwendungsobjekte
     Nicht invasiv
     Fügt lose gekoppelte Komponenten (POJO's) zu komplexen Systemen
      zusammen
     Skalierbar
     Verbessert die Testbarkeit der Komponenten, indem sie zuerst unabhängig
      von der Serverinfrastruktur getestet werden können




                                                          Copyright 2006 Thorsten Kamann   7
Einführung: Features

 Abstraktionsschicht für Transaktions-Management

     Erweiterbares Transaktions-Management
     Deklarative Konfiguration der Transaktionen ohne tief in das entsprechende
      Framework einzusteigen
     Generische Strategien für JTA und einfachen JDBC DataSource sind bereits
      enthalten
     Im Gegensatz zu reinem JTA oder EJB CMP ist dieses Transaktions-
      Management nicht auf J2EE-Umgebungen beschränkt




                                                            Copyright 2006 Thorsten Kamann   8
Einführung: Features

 Abstraktionsschicht für reines JDBC

     Reduziert den Code für auf JDBC-basierte Anwendungen
     Vereinfacht die Fehlerbehandlung
     Bietet eine aussagekräftige Exception-Hierarchie (herstellerunabhängig)
     Exceptions basieren auf der DAO-Exception-Hierarchie




                                                             Copyright 2006 Thorsten Kamann   9
Einführung: Features

 Integration von populären O/R-Mappern

     Unterstützung von Hibernate, Toplink, JDO und iBATIS SQL Maps
     Vereinfacht die Entwicklung mit diesen O/R-Mappern
     Unterstützung von Transaktionen
     Unterstützung des DAO-Patterns




                                                           Copyright 2006 Thorsten Kamann   10
Einführung: Features

 AOP Funktionalität

     Basiert auf AspectJ
     Vollständig integriert in das Spring Konfigurations-Management
     Transaktions-Management basiert auf AOP
     Jedes Objekt in Spring kann mittels AOP gemanaged werden




                                                            Copyright 2006 Thorsten Kamann   11
Einführung: Features

 Flexibles MVC-Webapplication Framework

     Benutzt die Spring-Core Funktionalitäten
     Sehr konfigurierbar durch verschiedene Strategie-Interfaces
     Kombinierbar mit den verschiedensten Viewtechnologien:
         JSP
         Velocity
         Tiles
         iText
         POI




                                                            Copyright 2006 Thorsten Kamann   12
Einführung: Features

 Alle Features von Spring können sowohl innerhalb als auch außerhalb eines
  J2EE-Container ausgeführt werden
 Ein zentraler Fokus von Spring ist es, Business-Komponenten und DAO's die keine
  spezifischen Services der J2EE verwenden, auch ohne J2EE-Container
  verwenden zu können
 Die Architektur von Spring ist sehr flexibel und sehr Low-Level angesiedelt
     Die JavaBeans-Konfiguration kann ohne AOP und MVC-Framework benutzt
      werden
     Dagegen benutzt das MVC-Framework die JavaBeans-Konfiguration
 Spring ist lauffähig ab Java 1.3. Erweiterte Funktionen, wie z.B. AOP und
  Annotation erwarten eine höhere Java Version




                                                             Copyright 2006 Thorsten Kamann   13
Konfiguration

           Copyright 2006 Thorsten Kamann   14
Konfiguration: XML-Schemas

 Spring Konfigurationen basieren auf XML-Schema
     Aber es gibt immer noch eine DTD
 Durch XML-Schema ist eine direktere Konfiguration möglich
     alt:
     <bean id=quot;simplequot; class=quot;o.s.jndi.JndiObjectFactoryBeanquot;>
      <property name=quot;jndiNamequot; value=quot;jdbc/MyDataSourcequot;/>
     </bean>
     neu:
     <jee:jndi-lookup id=quot;simplequot; jndi-name=quot;jdbc/MyDataSourcequot;/>
 Dadurch kürzere und eindeutigere Konfigurationen




                                                              Copyright 2006 Thorsten Kamann   15
Konfiguration: Modularisierung der Konfiguration

 Konfiguration wurde in verschiedene Module aufgeteilt
     Beans – Konfiguration von Spring-Beans
     Utils – Utilities wie Maps, Lists, Static Fields
     JEE – J2EE Konfiguration, wie EJB, JNDI
     Lang – Konfigurationen in anderen Sprachen (Groovy, JRuby, BeanShell)
     Tx - Transaktionen
     Aop - Aspekte
     Tool – Schema für die Anbindung von 3rd Party Erweiterungen
 Jedes Schema besitzt einen eindeutigen Namensraum




                                                           Copyright 2006 Thorsten Kamann   16
Konfiguration: Erweiterungen

 Konfiguration ist erweiterbar, z.B. für
     3rd Party Erweiterungen
     Domänen spezifische Konfigurationsdialekte
 Tools-Schema unterstützt die Erstellung von Erweiterungen
 Einfaches Deployment mittels JAR




                                                              Copyright 2006 Thorsten Kamann   17
Konfiguration: Neue Bean Scopes

 Spring unterstützt 5 Bean Scopes
     Singleton
     Prototype
     Request
     Session
     Global Session
 Request und Session sind nur bei Webanwendungen verfügbar
 Global Session ist nur bei Portal Anwendungen verfügbar




                                                            Copyright 2006 Thorsten Kamann   18
AOP

      Copyright 2006 Thorsten Kamann   19
AOP

 Spring hat 2 AOP-Implementation: SpringAOP und AspectJ
     SpringAOP ist einfacher und kann mit einfachen Beans arbeiten
     AspectJ wird vollständig unterstützt und kann auch auf nicht-SpringBeans
      angewandt werden
 SpringAOP unterstützt zur Zeit nur Methoden-basierte Join Points
 AOP-Autoproxies (default) oder CGLIB-Proxies können benutzen werden
 Konfiguration von AOP kann mit Annotations (@AspectJ) oder XML-basiert
  erfolgen
 Aktivierung von @AspectJ erfolgt mit einem <aop:aspectj-autoproxy/>
 Pointcuts können mit der AspectJ-typischen Expression-Sprache definiert
  werden



                                                            Copyright 2006 Thorsten Kamann   20
AOP: Schema-basierter AOP Support

 Bietet eine Alternative zu der Annotation-basierten Konfiguration, wenn kein
  Java5 verwendet werden kann
 Das AOP XML-Schema bietet XML-basierte Konfiguration von Aspekten, Advices
  und Pointcuts
 Expression-Sprache ist die gleiche wie bei den Annotations
 <aop:config>
      <aop:pointcut id=quot;dataAccessOperationquot;
              expression=quot;execution (* com.xyz.myapp.dao.*.*(..))quot;/>
      <aop:aspect id=quot;beforeExamplequot; ref=quot;aBeanquot;>
              <aop:before pointcut-ref=quot;dataAccessOperationquot;
                      method=quot;doCheckquot;/>
      </aop:aspect>
 </aop:config>




                                                           Copyright 2006 Thorsten Kamann   21
Datenzugriffsschicht

               Copyright 2006 Thorsten Kamann   22
Datenzugriffsschicht: Transaktionskonfiguration

 Stellt ein konsistentes Programmiermodell für verschiedene Transaktions-API's
  wie JPA, JTA, JDO, Hibernate, Toplink zur Verfügung
 Unterstützt eine programmatische und deklarative Transaktionskonfiguration
 Bietet ein vereinfachtes API für die programmatische Transaktionskonfiguration
 Deklarative Transaktionskonfiguration benutzt ein eigenes XML-Schema mit dem
  Namensraum tx
 Die eigentliche Konfiguration der Transaktionsregeln erfolgt mit AOP
 Dadurch können beliebige Objekte in die Transaktionsklammer aufgenommen
  werden, auch nicht von Spring verwaltete Objekte
 Spring unterstützt keine Remote-Transaktionen




                                                            Copyright 2006 Thorsten Kamann   23
Datenzugriffsschicht: Transaktionskonfiguration (Beispiel)

<beans ... xsi:schemaLocation=quot;...quot;>
 <bean id=quot;fServicequot; class=quot;DefaultFooServicequot;/>
 <bean id=quot;txManagerquot;.../>

 <tx:advice id=quot;txAdvicequot; transaction-manager=quot;txManagerquot;>
      <tx:attributes>
              <tx:method name=quot;get*quot; read-only=quot;truequot;/>
              <tx:method name=quot;*quot;/>
      </tx:attributes>
  </tx:advice>
  <aop:config>
    <aop:pointcut id=quot;fSquot; expression=quot;execution(*FooService.*(..))quot;/>
    <aop:advisor advice-ref=quot;txAdvicequot; pointcut-ref=quot;fsquot;/>
  </aop:config>
</beans>


                                                   Copyright 2006 Thorsten Kamann   24
Datenzugriffsschicht: Sonstige Neuerungen

 Spring 2.0 besitzt eine Java Persistence API (JPA) Abstraktionsschicht. So ist es
  einfach, eine beliebige JPA-Implementierung einzubinden
      JPATemplate und JPADaoSupport arbeiten gegen die „Plain JPA-API“

 Spring JMS unterstützt jetzt das Empfangen von asynchronen Nachrichten

 Für JDBC bietet Spring ein NamedParameterTemplate. So können sprechende
  Parameternamen in SQL-Abfragen anstatt der ? benutzt werden
 Für die Arbeit mit Java5 gibt es ein SimpleJdbcTemplate, das die Arbeit mit
  dem JdbcTemplate wesentlich vereinfacht




                                                               Copyright 2006 Thorsten Kamann   25
WEB

      Copyright 2006 Thorsten Kamann   26
Web: Spring Web MVC

 Es gibt eine neue Form-Taglibrary, mit der die Entwicklung von JSPs gegen das
  Spring Web MVC wesentlich vereinfacht wird
      Das erzeugte HTML ist HTML 4.01/XHTML 1.0
      Die Tags bekommen Zugriff auf das Command-Objekt und die Daten, mit
       denen der Controller arbeitet
      Die JSPs werden dadurch wesentlich schlanker und besser wartbar
      Beispiel:
      <form:form>
       <td><form:input path=quot;firstNamequot; /></td>
      </form:form>
      ergibt
      <td><input type=“text“ value=“Karl Karlsonquot; /></td>




                                                            Copyright 2006 Thorsten Kamann   27
Web: Spring Web MVC

 Convention over Configuration
     Name des Controllers wird auf die Request-URL gemappt
       WelcomeController --> /welcome*
     Name der Modelelemente werden automatisch ermittelt und an die View
      übergeben
       x.y.User --> user
     Automatisches Mapping der request-URL auf die logische View
       http://localhost/register.jsp --> /WEB-INF/jsps/register.jsp




                                                        Copyright 2006 Thorsten Kamann   28
Unterstützung dynamischer Sprachen

 Unterstützt werden Groovy, JRuby und BeanShell
 Für den Support von dynamischen Sprachen gibt es ein eigenes XML-Schema mit
  dem Namensraum lang
 Jede unterstützte Sprache hat ein eigenes Element
     <lang:jruby/>
     <lang:groovy/>
     <lang:bsh/>
 Beans, die mit einer dieser Sprachen erstellt wurden, können automatisch
  refreshed werden (Attribute refresh-check-delay=quot;TIME_IN_MSECquot;)
 Inline-Scripts können direkt in der Spring-Konfigurationsdatei hinterlegt werden




                                                             Copyright 2006 Thorsten Kamann   29
Unterstützung dynamischer Sprachen - Szenarios

 Scriptable Controller im Spring Web MVC
     User-spezifische Controller während der Laufzeit erstellen
     Schnell anpassbarer Code, da nur eine Textdatei geändert werden muss

 Scripted Validators
     Flexiblere Validatoren mit ungetypten Sprachen
     Schnell anpassbarer Code

 Ruby on Rails
 Groovy on Rails (GRails)




                                                            Copyright 2006 Thorsten Kamann   30
JMX

      Copyright 2006 Thorsten Kamann   31
JMX

 Spring JMX unterstützt einen Notification Mechanismus
     Eine beliebige Anzahl von NotificationListener für eine beliebige Anzahl
      von MBeans sind konfigurierbar
     Ein von Spring-MBean kann bei dem NotificationPublisher registriert
      werden

 Bessere Kontrolle des Verhaltens bei der Registrierung im MbeanServer
     REGISTRATION_FAIL_ON_EXISTING
     REGISTRATION_IGNORE_EXISTING
     REGISTRATION_REPLACE_EXISTING




                                                           Copyright 2006 Thorsten Kamann   32
Task Scheduler

           Copyright 2006 Thorsten Kamann   33
Task Scheduler

 Der Task Scheduler bietet eine Abstraktionsschicht für das Konzept der
  Executors (Thread Pools in Java 5)
 Er stellt dieses Konzept auch für Umgebungen mit Java 1.3 und Java 1.4 zur
  Verfügung und versteckt dabei die Implementierungsdetails zwischen den
  einzelnen JDKs
 Es werden synchrone, asynchrone und zeitgesteuerte Tasks unterstützt
 Konfiguration erfolgt über einfache Beandefinitionen
 <bean id=quot;taskExecutorquot; class=quot;org.sprin...ThreadPoolTaskExecutorquot;>
      ...
 </bean>
 <bean ...>
      <constructor-arg ref=quot;taskExecutorquot; />
 </bean>




                                                           Copyright 2006 Thorsten Kamann   34
Java5 Support

           Copyright 2006 Thorsten Kamann   35
Java5 Support

 Es können Javav5 Annotations verwendet werden, um die XML-Konfiguration
  schlank zu halten
 Es gibt zur Zeit nur einige Annotations:
     @Transactional
     @AspectJ
     @required
 Wird eine Klasse mit @Transactional gekennzeichnet, verkürzt sich die
  Konfiguration der Transaktionen, da sämtliche Informationen aus den Klassen
  ausgelesen werden:
 <tx:annotation-driven transaction-manager=quot;txManagerquot;/>




                                                           Copyright 2006 Thorsten Kamann   36
Zusammenfassung

           Copyright 2006 Thorsten Kamann   37
Zusammenfassung

 Spring 2.0 ist vollständig abwärtskompatibel. Alte Konfigurationen können
  weiter verwendet werden
 Die grössten Änderungen in Spring 2.0 betreffen die Konfiguration
 XML-Schema und die Aufteilung in verschiedene Module vereinfacht das
  Handling mit der grossen Menge an Konfigurationsmöglichkeiten
 Das voll integrierte AspectJ ist eine sehr mächtige Komponente, um Software-
  Systeme zu instrumentieren
 Der Support für dynamische Sprachen ermöglicht es, schnell und einfach
  Anwendungen zu erweitern und „dynamischer“ zu machen
 Der Task-Scheduler bietet eine gute Alternative zum komplexeren JMS-Support
  (allerdings nur, wenn JMS dazu benutzt wird bestimmte Tasks anzustoßen)
 Der Java5-Support bietet mit seinen Annotations eine schöne Möglichkeit,
  spezifische Konfigurationen zurück in den Java-Code zu bringen

                                                            Copyright 2006 Thorsten Kamann   38
Links

        Copyright 2006 Thorsten Kamann   39
Links

 Homepage des Springframeworks
 http://www.springframework.org/
 Dokumentation Spring 2.0
 http://static.springframework.org/spring/docs/2.0.x/reference/index
 .html
 MyEclipse bietet eine sehr gute Spring-Integration (zur Zeit allerdings nur Spring
  1.3.3)
 http://www.myeclipse.org/
 Spezialisten für Spring finden Sie unter
 http://www.itemis.de
 Webseite des Autors (mit Blog und Wiki)
 http://www.planetes.de/thorsten-kamann/
 Beispielanwendung mit Spring2, Hibernate und AOP
 http://thorque.wiki.com/Spring_2.0/Getting_Started_mit_Spring2_und_
 Hibernate

                                                              Copyright 2006 Thorsten Kamann   40

Contenu connexe

Tendances

Webinar Modern ABAP
Webinar Modern ABAPWebinar Modern ABAP
Webinar Modern ABAPCadaxo GmbH
 
May the forge be with you
May the forge be with youMay the forge be with you
May the forge be with youSandro Sonntag
 
Webinar ABAP 7.51 Releaseinformationen
Webinar ABAP 7.51 ReleaseinformationenWebinar ABAP 7.51 Releaseinformationen
Webinar ABAP 7.51 ReleaseinformationenCadaxo GmbH
 
Frontend-Architektur der 1&1 Bestellsysteme
Frontend-Architektur der 1&1 BestellsystemeFrontend-Architektur der 1&1 Bestellsysteme
Frontend-Architektur der 1&1 BestellsystemeNico Steiner
 
WJAX 2012: Dreamteam "BPM + Java EE"
WJAX 2012: Dreamteam "BPM + Java EE"WJAX 2012: Dreamteam "BPM + Java EE"
WJAX 2012: Dreamteam "BPM + Java EE"camunda services GmbH
 
Introduction to JEE
Introduction to JEEIntroduction to JEE
Introduction to JEEguestc44b7b
 
Leichtgewichtige Architekturen mit Spring, JPA, Maven und Groovy
Leichtgewichtige Architekturen mit Spring, JPA, Maven und GroovyLeichtgewichtige Architekturen mit Spring, JPA, Maven und Groovy
Leichtgewichtige Architekturen mit Spring, JPA, Maven und GroovyThorsten Kamann
 
Migrate your Sametime Server to LDAP Authentication (Admincamp 2013)
Migrate your Sametime Server to LDAP Authentication (Admincamp 2013)Migrate your Sametime Server to LDAP Authentication (Admincamp 2013)
Migrate your Sametime Server to LDAP Authentication (Admincamp 2013)Novakenstein
 
Best Practices SharePoint and SQL Installation
Best Practices SharePoint and SQL InstallationBest Practices SharePoint and SQL Installation
Best Practices SharePoint and SQL InstallationSamuel Zürcher
 
RAC Optimierung im Siebel CRM Umfeld, DOAG 2008
RAC Optimierung im Siebel CRM Umfeld, DOAG 2008RAC Optimierung im Siebel CRM Umfeld, DOAG 2008
RAC Optimierung im Siebel CRM Umfeld, DOAG 2008Frank
 
Sql best practices for SharePoint 2010
Sql best practices for SharePoint 2010Sql best practices for SharePoint 2010
Sql best practices for SharePoint 2010Samuel Zürcher
 
Einführung in die Java-Webentwicklung - Part II - [3 of 3] - Java Server Face...
Einführung in die Java-Webentwicklung - Part II - [3 of 3] - Java Server Face...Einführung in die Java-Webentwicklung - Part II - [3 of 3] - Java Server Face...
Einführung in die Java-Webentwicklung - Part II - [3 of 3] - Java Server Face...kaftanenko
 

Tendances (14)

Webinar Modern ABAP
Webinar Modern ABAPWebinar Modern ABAP
Webinar Modern ABAP
 
May the forge be with you
May the forge be with youMay the forge be with you
May the forge be with you
 
Webinar ABAP 7.51 Releaseinformationen
Webinar ABAP 7.51 ReleaseinformationenWebinar ABAP 7.51 Releaseinformationen
Webinar ABAP 7.51 Releaseinformationen
 
Frontend-Architektur der 1&1 Bestellsysteme
Frontend-Architektur der 1&1 BestellsystemeFrontend-Architektur der 1&1 Bestellsysteme
Frontend-Architektur der 1&1 Bestellsysteme
 
WJAX 2012: Dreamteam "BPM + Java EE"
WJAX 2012: Dreamteam "BPM + Java EE"WJAX 2012: Dreamteam "BPM + Java EE"
WJAX 2012: Dreamteam "BPM + Java EE"
 
JBoss ESB
JBoss ESBJBoss ESB
JBoss ESB
 
Introduction to JEE
Introduction to JEEIntroduction to JEE
Introduction to JEE
 
Leichtgewichtige Architekturen mit Spring, JPA, Maven und Groovy
Leichtgewichtige Architekturen mit Spring, JPA, Maven und GroovyLeichtgewichtige Architekturen mit Spring, JPA, Maven und Groovy
Leichtgewichtige Architekturen mit Spring, JPA, Maven und Groovy
 
Migrate your Sametime Server to LDAP Authentication (Admincamp 2013)
Migrate your Sametime Server to LDAP Authentication (Admincamp 2013)Migrate your Sametime Server to LDAP Authentication (Admincamp 2013)
Migrate your Sametime Server to LDAP Authentication (Admincamp 2013)
 
Best Practices SharePoint and SQL Installation
Best Practices SharePoint and SQL InstallationBest Practices SharePoint and SQL Installation
Best Practices SharePoint and SQL Installation
 
RAC Optimierung im Siebel CRM Umfeld, DOAG 2008
RAC Optimierung im Siebel CRM Umfeld, DOAG 2008RAC Optimierung im Siebel CRM Umfeld, DOAG 2008
RAC Optimierung im Siebel CRM Umfeld, DOAG 2008
 
Sql best practices for SharePoint 2010
Sql best practices for SharePoint 2010Sql best practices for SharePoint 2010
Sql best practices for SharePoint 2010
 
Einführung in die Java-Webentwicklung - Part II - [3 of 3] - Java Server Face...
Einführung in die Java-Webentwicklung - Part II - [3 of 3] - Java Server Face...Einführung in die Java-Webentwicklung - Part II - [3 of 3] - Java Server Face...
Einführung in die Java-Webentwicklung - Part II - [3 of 3] - Java Server Face...
 
Backbase Intro
Backbase IntroBackbase Intro
Backbase Intro
 

En vedette

Prueba
Prueba Prueba
Prueba Meduca
 
Neue digitale Bildungs- und Kulturräume: Überlegungen zur Bildungsqualität de...
Neue digitale Bildungs- und Kulturräume: Überlegungen zur Bildungsqualität de...Neue digitale Bildungs- und Kulturräume: Überlegungen zur Bildungsqualität de...
Neue digitale Bildungs- und Kulturräume: Überlegungen zur Bildungsqualität de...Benjamin Jörissen
 
ReMashed PLESeminar Hamburg 2009
ReMashed PLESeminar Hamburg 2009ReMashed PLESeminar Hamburg 2009
ReMashed PLESeminar Hamburg 2009Hendrik Drachsler
 
Pecha-Kucha-Session WJAX 2009 "Mein Agiler Koffer" von Holger Koschek
Pecha-Kucha-Session WJAX 2009 "Mein Agiler Koffer" von Holger KoschekPecha-Kucha-Session WJAX 2009 "Mein Agiler Koffer" von Holger Koschek
Pecha-Kucha-Session WJAX 2009 "Mein Agiler Koffer" von Holger KoschekBernd Schiffer
 
Verkehrskonzept UWG
Verkehrskonzept UWGVerkehrskonzept UWG
Verkehrskonzept UWGkulturkreis
 
PROGRAMAS DE REALIDAD VIRTUAL
PROGRAMAS DE REALIDAD VIRTUALPROGRAMAS DE REALIDAD VIRTUAL
PROGRAMAS DE REALIDAD VIRTUALtat
 
Lotto - geschichtliche Entwicklung
Lotto - geschichtliche EntwicklungLotto - geschichtliche Entwicklung
Lotto - geschichtliche Entwicklunglottoaktuell
 
Las modalidades textuales (ii)
Las modalidades textuales (ii)Las modalidades textuales (ii)
Las modalidades textuales (ii)jesusrodri
 
Beratungsnavi.de - Idee und Projektvorstellung
Beratungsnavi.de - Idee und ProjektvorstellungBeratungsnavi.de - Idee und Projektvorstellung
Beratungsnavi.de - Idee und ProjektvorstellungEDURUHR
 
Merchandising local publicidad
Merchandising local publicidadMerchandising local publicidad
Merchandising local publicidadlocal publicidad
 
Inteligencia
InteligenciaInteligencia
Inteligenciaduvan0202
 

En vedette (20)

La libertad
La libertadLa libertad
La libertad
 
Prueba
Prueba Prueba
Prueba
 
Nachlese
NachleseNachlese
Nachlese
 
Neue digitale Bildungs- und Kulturräume: Überlegungen zur Bildungsqualität de...
Neue digitale Bildungs- und Kulturräume: Überlegungen zur Bildungsqualität de...Neue digitale Bildungs- und Kulturräume: Überlegungen zur Bildungsqualität de...
Neue digitale Bildungs- und Kulturräume: Überlegungen zur Bildungsqualität de...
 
ReMashed PLESeminar Hamburg 2009
ReMashed PLESeminar Hamburg 2009ReMashed PLESeminar Hamburg 2009
ReMashed PLESeminar Hamburg 2009
 
Pecha-Kucha-Session WJAX 2009 "Mein Agiler Koffer" von Holger Koschek
Pecha-Kucha-Session WJAX 2009 "Mein Agiler Koffer" von Holger KoschekPecha-Kucha-Session WJAX 2009 "Mein Agiler Koffer" von Holger Koschek
Pecha-Kucha-Session WJAX 2009 "Mein Agiler Koffer" von Holger Koschek
 
Diapositivas de talento
Diapositivas de talentoDiapositivas de talento
Diapositivas de talento
 
Mio2
Mio2Mio2
Mio2
 
C2 eseiza pablo a
C2 eseiza pablo aC2 eseiza pablo a
C2 eseiza pablo a
 
Ffpi u2
Ffpi u2Ffpi u2
Ffpi u2
 
Verkehrskonzept UWG
Verkehrskonzept UWGVerkehrskonzept UWG
Verkehrskonzept UWG
 
Merchadising general
Merchadising generalMerchadising general
Merchadising general
 
PROGRAMAS DE REALIDAD VIRTUAL
PROGRAMAS DE REALIDAD VIRTUALPROGRAMAS DE REALIDAD VIRTUAL
PROGRAMAS DE REALIDAD VIRTUAL
 
Las estrellas
Las estrellasLas estrellas
Las estrellas
 
Lotto - geschichtliche Entwicklung
Lotto - geschichtliche EntwicklungLotto - geschichtliche Entwicklung
Lotto - geschichtliche Entwicklung
 
Las modalidades textuales (ii)
Las modalidades textuales (ii)Las modalidades textuales (ii)
Las modalidades textuales (ii)
 
Stands nuevo 2012
Stands nuevo 2012Stands nuevo 2012
Stands nuevo 2012
 
Beratungsnavi.de - Idee und Projektvorstellung
Beratungsnavi.de - Idee und ProjektvorstellungBeratungsnavi.de - Idee und Projektvorstellung
Beratungsnavi.de - Idee und Projektvorstellung
 
Merchandising local publicidad
Merchandising local publicidadMerchandising local publicidad
Merchandising local publicidad
 
Inteligencia
InteligenciaInteligencia
Inteligencia
 

Similaire à Spring 2.0

Maven2 - Die nächste Generation des Buildmanagements?
Maven2 - Die nächste Generation des Buildmanagements?Maven2 - Die nächste Generation des Buildmanagements?
Maven2 - Die nächste Generation des Buildmanagements?Thorsten Kamann
 
Webinar - ABAP Development Tools
Webinar - ABAP Development ToolsWebinar - ABAP Development Tools
Webinar - ABAP Development ToolsCadaxo GmbH
 
Anwendungsmodernisierung mit Oracle Application Express (APEX)
Anwendungsmodernisierung mit Oracle Application Express (APEX)Anwendungsmodernisierung mit Oracle Application Express (APEX)
Anwendungsmodernisierung mit Oracle Application Express (APEX)Niels de Bruijn
 
Big Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im Überblick
Big Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im ÜberblickBig Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im Überblick
Big Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im ÜberblickKarin Patenge
 
Neue Features der Java EE 6
Neue Features der Java EE 6Neue Features der Java EE 6
Neue Features der Java EE 6GFU Cyrus AG
 
Sql Server GrundlagenfüR Share Point Admins
Sql Server GrundlagenfüR Share Point AdminsSql Server GrundlagenfüR Share Point Admins
Sql Server GrundlagenfüR Share Point AdminsSharepointUGDD
 
Sql Server Grundlagen für Sharepoint Administratoren
Sql Server Grundlagen für Sharepoint AdministratorenSql Server Grundlagen für Sharepoint Administratoren
Sql Server Grundlagen für Sharepoint AdministratorenCommunardo GmbH
 
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 heutePhilipp Burgmer
 
fn project serverless computing
fn project serverless computingfn project serverless computing
fn project serverless computingWolfgang Weigend
 
Ü̈ber Ant und Maven zu SBT und Gradle
Ü̈ber Ant und Maven zu SBT und GradleÜ̈ber Ant und Maven zu SBT und Gradle
Ü̈ber Ant und Maven zu SBT und Gradleadesso AG
 
20190604_DOAGDatabase2019_OracleNoSQLDB_for_DBAs
20190604_DOAGDatabase2019_OracleNoSQLDB_for_DBAs20190604_DOAGDatabase2019_OracleNoSQLDB_for_DBAs
20190604_DOAGDatabase2019_OracleNoSQLDB_for_DBAsKarin Patenge
 
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET CoreHands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET CoreGregor Biswanger
 
Taugt AngularJS wirklich was? Erfahrungsbericht und Ausblick
Taugt AngularJS wirklich was? Erfahrungsbericht und AusblickTaugt AngularJS wirklich was? Erfahrungsbericht und Ausblick
Taugt AngularJS wirklich was? Erfahrungsbericht und AusblickPhilipp Burgmer
 
bccon-2014 adm01 tipps-und-skripts-aus-dem-leben-eines-ibm-connections-admins
bccon-2014 adm01 tipps-und-skripts-aus-dem-leben-eines-ibm-connections-adminsbccon-2014 adm01 tipps-und-skripts-aus-dem-leben-eines-ibm-connections-admins
bccon-2014 adm01 tipps-und-skripts-aus-dem-leben-eines-ibm-connections-adminsICS User Group
 
Tipps und Skripts aus dem Leben eines Connections Admins
Tipps und Skripts aus dem Leben eines Connections AdminsTipps und Skripts aus dem Leben eines Connections Admins
Tipps und Skripts aus dem Leben eines Connections AdminsKlaus Bild
 
EntwicklerCamp 2014 - DOTS reloaded
EntwicklerCamp 2014 - DOTS reloadedEntwicklerCamp 2014 - DOTS reloaded
EntwicklerCamp 2014 - DOTS reloadedRené Winkelmeyer
 
ASP.NET Core – Troublemaker oder Problemsolver?
ASP.NET Core – Troublemaker oder Problemsolver?ASP.NET Core – Troublemaker oder Problemsolver?
ASP.NET Core – Troublemaker oder Problemsolver?POINT. Consulting GmbH
 

Similaire à Spring 2.0 (20)

Maven2 - Die nächste Generation des Buildmanagements?
Maven2 - Die nächste Generation des Buildmanagements?Maven2 - Die nächste Generation des Buildmanagements?
Maven2 - Die nächste Generation des Buildmanagements?
 
DOAG 2010: ADF Faces RC Best Practice
DOAG 2010: ADF Faces RC Best PracticeDOAG 2010: ADF Faces RC Best Practice
DOAG 2010: ADF Faces RC Best Practice
 
Webinar - ABAP Development Tools
Webinar - ABAP Development ToolsWebinar - ABAP Development Tools
Webinar - ABAP Development Tools
 
Anwendungsmodernisierung mit Oracle Application Express (APEX)
Anwendungsmodernisierung mit Oracle Application Express (APEX)Anwendungsmodernisierung mit Oracle Application Express (APEX)
Anwendungsmodernisierung mit Oracle Application Express (APEX)
 
Big Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im Überblick
Big Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im ÜberblickBig Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im Überblick
Big Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im Überblick
 
Neue Features der Java EE 6
Neue Features der Java EE 6Neue Features der Java EE 6
Neue Features der Java EE 6
 
Sql Server GrundlagenfüR Share Point Admins
Sql Server GrundlagenfüR Share Point AdminsSql Server GrundlagenfüR Share Point Admins
Sql Server GrundlagenfüR Share Point Admins
 
Sql Server Grundlagen für Sharepoint Administratoren
Sql Server Grundlagen für Sharepoint AdministratorenSql Server Grundlagen für Sharepoint Administratoren
Sql Server Grundlagen für Sharepoint Administratoren
 
java apis
java apisjava apis
java apis
 
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
 
fn project serverless computing
fn project serverless computingfn project serverless computing
fn project serverless computing
 
Ü̈ber Ant und Maven zu SBT und Gradle
Ü̈ber Ant und Maven zu SBT und GradleÜ̈ber Ant und Maven zu SBT und Gradle
Ü̈ber Ant und Maven zu SBT und Gradle
 
20190604_DOAGDatabase2019_OracleNoSQLDB_for_DBAs
20190604_DOAGDatabase2019_OracleNoSQLDB_for_DBAs20190604_DOAGDatabase2019_OracleNoSQLDB_for_DBAs
20190604_DOAGDatabase2019_OracleNoSQLDB_for_DBAs
 
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET CoreHands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
 
Taugt AngularJS wirklich was? Erfahrungsbericht und Ausblick
Taugt AngularJS wirklich was? Erfahrungsbericht und AusblickTaugt AngularJS wirklich was? Erfahrungsbericht und Ausblick
Taugt AngularJS wirklich was? Erfahrungsbericht und Ausblick
 
Werkzeugkasten
WerkzeugkastenWerkzeugkasten
Werkzeugkasten
 
bccon-2014 adm01 tipps-und-skripts-aus-dem-leben-eines-ibm-connections-admins
bccon-2014 adm01 tipps-und-skripts-aus-dem-leben-eines-ibm-connections-adminsbccon-2014 adm01 tipps-und-skripts-aus-dem-leben-eines-ibm-connections-admins
bccon-2014 adm01 tipps-und-skripts-aus-dem-leben-eines-ibm-connections-admins
 
Tipps und Skripts aus dem Leben eines Connections Admins
Tipps und Skripts aus dem Leben eines Connections AdminsTipps und Skripts aus dem Leben eines Connections Admins
Tipps und Skripts aus dem Leben eines Connections Admins
 
EntwicklerCamp 2014 - DOTS reloaded
EntwicklerCamp 2014 - DOTS reloadedEntwicklerCamp 2014 - DOTS reloaded
EntwicklerCamp 2014 - DOTS reloaded
 
ASP.NET Core – Troublemaker oder Problemsolver?
ASP.NET Core – Troublemaker oder Problemsolver?ASP.NET Core – Troublemaker oder Problemsolver?
ASP.NET Core – Troublemaker oder Problemsolver?
 

Plus de Thorsten Kamann

Scrum and distributed teams
Scrum and distributed teamsScrum and distributed teams
Scrum and distributed teamsThorsten Kamann
 
Effizente Entwicklung für verteilte Projekte
Effizente Entwicklung für verteilte ProjekteEffizente Entwicklung für verteilte Projekte
Effizente Entwicklung für verteilte ProjekteThorsten Kamann
 
Spring 3 - Der dritte Frühling
Spring 3 - Der dritte FrühlingSpring 3 - Der dritte Frühling
Spring 3 - Der dritte FrühlingThorsten Kamann
 
Spring 3 - An Introduction
Spring 3 - An IntroductionSpring 3 - An Introduction
Spring 3 - An IntroductionThorsten Kamann
 
Webtests Reloaded - Webtest with Selenium, TestNG, Groovy and Maven
Webtests Reloaded - Webtest with Selenium, TestNG, Groovy and MavenWebtests Reloaded - Webtest with Selenium, TestNG, Groovy and Maven
Webtests Reloaded - Webtest with Selenium, TestNG, Groovy and MavenThorsten Kamann
 
My Daily Spring - Best Practices with the Springframework
My Daily Spring - Best Practices with the SpringframeworkMy Daily Spring - Best Practices with the Springframework
My Daily Spring - Best Practices with the SpringframeworkThorsten Kamann
 
Vortragsreihe Dortmund: Unified Development Environments
Vortragsreihe Dortmund: Unified Development EnvironmentsVortragsreihe Dortmund: Unified Development Environments
Vortragsreihe Dortmund: Unified Development EnvironmentsThorsten Kamann
 
Leichtgewichtige Architekturen mit Spring, JPA, Maven und Groovy
Leichtgewichtige Architekturen mit Spring, JPA, Maven und GroovyLeichtgewichtige Architekturen mit Spring, JPA, Maven und Groovy
Leichtgewichtige Architekturen mit Spring, JPA, Maven und GroovyThorsten Kamann
 
Let’s groove with Groovy
Let’s groove with GroovyLet’s groove with Groovy
Let’s groove with GroovyThorsten Kamann
 

Plus de Thorsten Kamann (11)

Scrum on rails
Scrum on railsScrum on rails
Scrum on rails
 
Scrum and distributed teams
Scrum and distributed teamsScrum and distributed teams
Scrum and distributed teams
 
Effizente Entwicklung für verteilte Projekte
Effizente Entwicklung für verteilte ProjekteEffizente Entwicklung für verteilte Projekte
Effizente Entwicklung für verteilte Projekte
 
Spring 3 - Der dritte Frühling
Spring 3 - Der dritte FrühlingSpring 3 - Der dritte Frühling
Spring 3 - Der dritte Frühling
 
Spring 3 - An Introduction
Spring 3 - An IntroductionSpring 3 - An Introduction
Spring 3 - An Introduction
 
Webtests Reloaded - Webtest with Selenium, TestNG, Groovy and Maven
Webtests Reloaded - Webtest with Selenium, TestNG, Groovy and MavenWebtests Reloaded - Webtest with Selenium, TestNG, Groovy and Maven
Webtests Reloaded - Webtest with Selenium, TestNG, Groovy and Maven
 
My Daily Spring - Best Practices with the Springframework
My Daily Spring - Best Practices with the SpringframeworkMy Daily Spring - Best Practices with the Springframework
My Daily Spring - Best Practices with the Springframework
 
Vortragsreihe Dortmund: Unified Development Environments
Vortragsreihe Dortmund: Unified Development EnvironmentsVortragsreihe Dortmund: Unified Development Environments
Vortragsreihe Dortmund: Unified Development Environments
 
Leichtgewichtige Architekturen mit Spring, JPA, Maven und Groovy
Leichtgewichtige Architekturen mit Spring, JPA, Maven und GroovyLeichtgewichtige Architekturen mit Spring, JPA, Maven und Groovy
Leichtgewichtige Architekturen mit Spring, JPA, Maven und Groovy
 
Let’s groove with Groovy
Let’s groove with GroovyLet’s groove with Groovy
Let’s groove with Groovy
 
Groovy - Rocks or Not?
Groovy - Rocks or Not?Groovy - Rocks or Not?
Groovy - Rocks or Not?
 

Spring 2.0

  • 1. Spring 2.0 – Frühlingsgefühle für Entwickler von und mit Thorsten Kamann Copyright 2006 Thorsten Kamann 1
  • 2. Inhalt  Einführung  Konfiguration  AOP  Datenzugriffsschicht  Web  Sonstiges  Unterstützung dynamischer Sprachen  JMX  Task Scheduler  Java5 Support  Zusammenfassung  Links Copyright 2006 Thorsten Kamann 2
  • 3. Einführung Copyright 2006 Thorsten Kamann 3
  • 4. Einführung: Was ist Spring?  Spring ist eine Ansammlung von API's, die die Entwicklung mit der J2EE vereinfacht  Spring ist ein Dependency Injection Container  Spring ist ein Programmiermodell für die Entwicklung  leichtgewichtiger Komponenten  lose gekoppelter Komponenten  vom Framework unabhängiger Komponenten  testbarer Komponenten  Spring konkurriert mit keinem bestehenden Framework, bietet allerdings eine Integration an Copyright 2006 Thorsten Kamann 4
  • 5. Einführung: Leitsprüche  J2EE soll einfacher zu benutzen sein  Es ist besser gegen Interfaces zu programmieren als gegen konkrete Klassen  JavaBeans bieten eine hervorragende Möglichkeit Anwendungen zu konfigurieren  OO-Design ist wichtiger als jede Implementierungstechnologie (z.B. J2EE)  Checked Exceptions werden in der J2EE zu häufig verwendet. Ein Framework sollte den Entwickler nicht zwingen Exceptions zu behandeln, da er wahrscheinlich nichts konkretes damit anfangen kann  Testing ist essenziell. Ein Framework sollte dem Entwickler das Testen so einfach wie möglich machen Copyright 2006 Thorsten Kamann 5
  • 6. Einführung: Ziele  Spring soll Spaß machen  Der Anwendungscode soll nicht von Spring abhängig sein  Spring soll nicht mit bestehenden Frameworks konkurrieren, sondern eine Integration anbieten (z.B. JDO, Toplink und Hibernate) Copyright 2006 Thorsten Kamann 6
  • 7. Einführung: Features  Leichtgewichtiger Container  Zentralisierte und automatisierte Konfiguration und Verdrahtung der Anwendungsobjekte  Nicht invasiv  Fügt lose gekoppelte Komponenten (POJO's) zu komplexen Systemen zusammen  Skalierbar  Verbessert die Testbarkeit der Komponenten, indem sie zuerst unabhängig von der Serverinfrastruktur getestet werden können Copyright 2006 Thorsten Kamann 7
  • 8. Einführung: Features  Abstraktionsschicht für Transaktions-Management  Erweiterbares Transaktions-Management  Deklarative Konfiguration der Transaktionen ohne tief in das entsprechende Framework einzusteigen  Generische Strategien für JTA und einfachen JDBC DataSource sind bereits enthalten  Im Gegensatz zu reinem JTA oder EJB CMP ist dieses Transaktions- Management nicht auf J2EE-Umgebungen beschränkt Copyright 2006 Thorsten Kamann 8
  • 9. Einführung: Features  Abstraktionsschicht für reines JDBC  Reduziert den Code für auf JDBC-basierte Anwendungen  Vereinfacht die Fehlerbehandlung  Bietet eine aussagekräftige Exception-Hierarchie (herstellerunabhängig)  Exceptions basieren auf der DAO-Exception-Hierarchie Copyright 2006 Thorsten Kamann 9
  • 10. Einführung: Features  Integration von populären O/R-Mappern  Unterstützung von Hibernate, Toplink, JDO und iBATIS SQL Maps  Vereinfacht die Entwicklung mit diesen O/R-Mappern  Unterstützung von Transaktionen  Unterstützung des DAO-Patterns Copyright 2006 Thorsten Kamann 10
  • 11. Einführung: Features  AOP Funktionalität  Basiert auf AspectJ  Vollständig integriert in das Spring Konfigurations-Management  Transaktions-Management basiert auf AOP  Jedes Objekt in Spring kann mittels AOP gemanaged werden Copyright 2006 Thorsten Kamann 11
  • 12. Einführung: Features  Flexibles MVC-Webapplication Framework  Benutzt die Spring-Core Funktionalitäten  Sehr konfigurierbar durch verschiedene Strategie-Interfaces  Kombinierbar mit den verschiedensten Viewtechnologien:  JSP  Velocity  Tiles  iText  POI Copyright 2006 Thorsten Kamann 12
  • 13. Einführung: Features  Alle Features von Spring können sowohl innerhalb als auch außerhalb eines J2EE-Container ausgeführt werden  Ein zentraler Fokus von Spring ist es, Business-Komponenten und DAO's die keine spezifischen Services der J2EE verwenden, auch ohne J2EE-Container verwenden zu können  Die Architektur von Spring ist sehr flexibel und sehr Low-Level angesiedelt  Die JavaBeans-Konfiguration kann ohne AOP und MVC-Framework benutzt werden  Dagegen benutzt das MVC-Framework die JavaBeans-Konfiguration  Spring ist lauffähig ab Java 1.3. Erweiterte Funktionen, wie z.B. AOP und Annotation erwarten eine höhere Java Version Copyright 2006 Thorsten Kamann 13
  • 14. Konfiguration Copyright 2006 Thorsten Kamann 14
  • 15. Konfiguration: XML-Schemas  Spring Konfigurationen basieren auf XML-Schema  Aber es gibt immer noch eine DTD  Durch XML-Schema ist eine direktere Konfiguration möglich  alt: <bean id=quot;simplequot; class=quot;o.s.jndi.JndiObjectFactoryBeanquot;> <property name=quot;jndiNamequot; value=quot;jdbc/MyDataSourcequot;/> </bean>  neu: <jee:jndi-lookup id=quot;simplequot; jndi-name=quot;jdbc/MyDataSourcequot;/>  Dadurch kürzere und eindeutigere Konfigurationen Copyright 2006 Thorsten Kamann 15
  • 16. Konfiguration: Modularisierung der Konfiguration  Konfiguration wurde in verschiedene Module aufgeteilt  Beans – Konfiguration von Spring-Beans  Utils – Utilities wie Maps, Lists, Static Fields  JEE – J2EE Konfiguration, wie EJB, JNDI  Lang – Konfigurationen in anderen Sprachen (Groovy, JRuby, BeanShell)  Tx - Transaktionen  Aop - Aspekte  Tool – Schema für die Anbindung von 3rd Party Erweiterungen  Jedes Schema besitzt einen eindeutigen Namensraum Copyright 2006 Thorsten Kamann 16
  • 17. Konfiguration: Erweiterungen  Konfiguration ist erweiterbar, z.B. für  3rd Party Erweiterungen  Domänen spezifische Konfigurationsdialekte  Tools-Schema unterstützt die Erstellung von Erweiterungen  Einfaches Deployment mittels JAR Copyright 2006 Thorsten Kamann 17
  • 18. Konfiguration: Neue Bean Scopes  Spring unterstützt 5 Bean Scopes  Singleton  Prototype  Request  Session  Global Session  Request und Session sind nur bei Webanwendungen verfügbar  Global Session ist nur bei Portal Anwendungen verfügbar Copyright 2006 Thorsten Kamann 18
  • 19. AOP Copyright 2006 Thorsten Kamann 19
  • 20. AOP  Spring hat 2 AOP-Implementation: SpringAOP und AspectJ  SpringAOP ist einfacher und kann mit einfachen Beans arbeiten  AspectJ wird vollständig unterstützt und kann auch auf nicht-SpringBeans angewandt werden  SpringAOP unterstützt zur Zeit nur Methoden-basierte Join Points  AOP-Autoproxies (default) oder CGLIB-Proxies können benutzen werden  Konfiguration von AOP kann mit Annotations (@AspectJ) oder XML-basiert erfolgen  Aktivierung von @AspectJ erfolgt mit einem <aop:aspectj-autoproxy/>  Pointcuts können mit der AspectJ-typischen Expression-Sprache definiert werden Copyright 2006 Thorsten Kamann 20
  • 21. AOP: Schema-basierter AOP Support  Bietet eine Alternative zu der Annotation-basierten Konfiguration, wenn kein Java5 verwendet werden kann  Das AOP XML-Schema bietet XML-basierte Konfiguration von Aspekten, Advices und Pointcuts  Expression-Sprache ist die gleiche wie bei den Annotations <aop:config> <aop:pointcut id=quot;dataAccessOperationquot; expression=quot;execution (* com.xyz.myapp.dao.*.*(..))quot;/> <aop:aspect id=quot;beforeExamplequot; ref=quot;aBeanquot;> <aop:before pointcut-ref=quot;dataAccessOperationquot; method=quot;doCheckquot;/> </aop:aspect> </aop:config> Copyright 2006 Thorsten Kamann 21
  • 22. Datenzugriffsschicht Copyright 2006 Thorsten Kamann 22
  • 23. Datenzugriffsschicht: Transaktionskonfiguration  Stellt ein konsistentes Programmiermodell für verschiedene Transaktions-API's wie JPA, JTA, JDO, Hibernate, Toplink zur Verfügung  Unterstützt eine programmatische und deklarative Transaktionskonfiguration  Bietet ein vereinfachtes API für die programmatische Transaktionskonfiguration  Deklarative Transaktionskonfiguration benutzt ein eigenes XML-Schema mit dem Namensraum tx  Die eigentliche Konfiguration der Transaktionsregeln erfolgt mit AOP  Dadurch können beliebige Objekte in die Transaktionsklammer aufgenommen werden, auch nicht von Spring verwaltete Objekte  Spring unterstützt keine Remote-Transaktionen Copyright 2006 Thorsten Kamann 23
  • 24. Datenzugriffsschicht: Transaktionskonfiguration (Beispiel) <beans ... xsi:schemaLocation=quot;...quot;> <bean id=quot;fServicequot; class=quot;DefaultFooServicequot;/> <bean id=quot;txManagerquot;.../> <tx:advice id=quot;txAdvicequot; transaction-manager=quot;txManagerquot;> <tx:attributes> <tx:method name=quot;get*quot; read-only=quot;truequot;/> <tx:method name=quot;*quot;/> </tx:attributes> </tx:advice> <aop:config> <aop:pointcut id=quot;fSquot; expression=quot;execution(*FooService.*(..))quot;/> <aop:advisor advice-ref=quot;txAdvicequot; pointcut-ref=quot;fsquot;/> </aop:config> </beans> Copyright 2006 Thorsten Kamann 24
  • 25. Datenzugriffsschicht: Sonstige Neuerungen  Spring 2.0 besitzt eine Java Persistence API (JPA) Abstraktionsschicht. So ist es einfach, eine beliebige JPA-Implementierung einzubinden  JPATemplate und JPADaoSupport arbeiten gegen die „Plain JPA-API“  Spring JMS unterstützt jetzt das Empfangen von asynchronen Nachrichten  Für JDBC bietet Spring ein NamedParameterTemplate. So können sprechende Parameternamen in SQL-Abfragen anstatt der ? benutzt werden  Für die Arbeit mit Java5 gibt es ein SimpleJdbcTemplate, das die Arbeit mit dem JdbcTemplate wesentlich vereinfacht Copyright 2006 Thorsten Kamann 25
  • 26. WEB Copyright 2006 Thorsten Kamann 26
  • 27. Web: Spring Web MVC  Es gibt eine neue Form-Taglibrary, mit der die Entwicklung von JSPs gegen das Spring Web MVC wesentlich vereinfacht wird  Das erzeugte HTML ist HTML 4.01/XHTML 1.0  Die Tags bekommen Zugriff auf das Command-Objekt und die Daten, mit denen der Controller arbeitet  Die JSPs werden dadurch wesentlich schlanker und besser wartbar  Beispiel: <form:form> <td><form:input path=quot;firstNamequot; /></td> </form:form> ergibt <td><input type=“text“ value=“Karl Karlsonquot; /></td> Copyright 2006 Thorsten Kamann 27
  • 28. Web: Spring Web MVC  Convention over Configuration  Name des Controllers wird auf die Request-URL gemappt WelcomeController --> /welcome*  Name der Modelelemente werden automatisch ermittelt und an die View übergeben x.y.User --> user  Automatisches Mapping der request-URL auf die logische View http://localhost/register.jsp --> /WEB-INF/jsps/register.jsp Copyright 2006 Thorsten Kamann 28
  • 29. Unterstützung dynamischer Sprachen  Unterstützt werden Groovy, JRuby und BeanShell  Für den Support von dynamischen Sprachen gibt es ein eigenes XML-Schema mit dem Namensraum lang  Jede unterstützte Sprache hat ein eigenes Element  <lang:jruby/>  <lang:groovy/>  <lang:bsh/>  Beans, die mit einer dieser Sprachen erstellt wurden, können automatisch refreshed werden (Attribute refresh-check-delay=quot;TIME_IN_MSECquot;)  Inline-Scripts können direkt in der Spring-Konfigurationsdatei hinterlegt werden Copyright 2006 Thorsten Kamann 29
  • 30. Unterstützung dynamischer Sprachen - Szenarios  Scriptable Controller im Spring Web MVC  User-spezifische Controller während der Laufzeit erstellen  Schnell anpassbarer Code, da nur eine Textdatei geändert werden muss  Scripted Validators  Flexiblere Validatoren mit ungetypten Sprachen  Schnell anpassbarer Code  Ruby on Rails  Groovy on Rails (GRails) Copyright 2006 Thorsten Kamann 30
  • 31. JMX Copyright 2006 Thorsten Kamann 31
  • 32. JMX  Spring JMX unterstützt einen Notification Mechanismus  Eine beliebige Anzahl von NotificationListener für eine beliebige Anzahl von MBeans sind konfigurierbar  Ein von Spring-MBean kann bei dem NotificationPublisher registriert werden  Bessere Kontrolle des Verhaltens bei der Registrierung im MbeanServer  REGISTRATION_FAIL_ON_EXISTING  REGISTRATION_IGNORE_EXISTING  REGISTRATION_REPLACE_EXISTING Copyright 2006 Thorsten Kamann 32
  • 33. Task Scheduler Copyright 2006 Thorsten Kamann 33
  • 34. Task Scheduler  Der Task Scheduler bietet eine Abstraktionsschicht für das Konzept der Executors (Thread Pools in Java 5)  Er stellt dieses Konzept auch für Umgebungen mit Java 1.3 und Java 1.4 zur Verfügung und versteckt dabei die Implementierungsdetails zwischen den einzelnen JDKs  Es werden synchrone, asynchrone und zeitgesteuerte Tasks unterstützt  Konfiguration erfolgt über einfache Beandefinitionen <bean id=quot;taskExecutorquot; class=quot;org.sprin...ThreadPoolTaskExecutorquot;> ... </bean> <bean ...> <constructor-arg ref=quot;taskExecutorquot; /> </bean> Copyright 2006 Thorsten Kamann 34
  • 35. Java5 Support Copyright 2006 Thorsten Kamann 35
  • 36. Java5 Support  Es können Javav5 Annotations verwendet werden, um die XML-Konfiguration schlank zu halten  Es gibt zur Zeit nur einige Annotations:  @Transactional  @AspectJ  @required  Wird eine Klasse mit @Transactional gekennzeichnet, verkürzt sich die Konfiguration der Transaktionen, da sämtliche Informationen aus den Klassen ausgelesen werden: <tx:annotation-driven transaction-manager=quot;txManagerquot;/> Copyright 2006 Thorsten Kamann 36
  • 37. Zusammenfassung Copyright 2006 Thorsten Kamann 37
  • 38. Zusammenfassung  Spring 2.0 ist vollständig abwärtskompatibel. Alte Konfigurationen können weiter verwendet werden  Die grössten Änderungen in Spring 2.0 betreffen die Konfiguration  XML-Schema und die Aufteilung in verschiedene Module vereinfacht das Handling mit der grossen Menge an Konfigurationsmöglichkeiten  Das voll integrierte AspectJ ist eine sehr mächtige Komponente, um Software- Systeme zu instrumentieren  Der Support für dynamische Sprachen ermöglicht es, schnell und einfach Anwendungen zu erweitern und „dynamischer“ zu machen  Der Task-Scheduler bietet eine gute Alternative zum komplexeren JMS-Support (allerdings nur, wenn JMS dazu benutzt wird bestimmte Tasks anzustoßen)  Der Java5-Support bietet mit seinen Annotations eine schöne Möglichkeit, spezifische Konfigurationen zurück in den Java-Code zu bringen Copyright 2006 Thorsten Kamann 38
  • 39. Links Copyright 2006 Thorsten Kamann 39
  • 40. Links  Homepage des Springframeworks http://www.springframework.org/  Dokumentation Spring 2.0 http://static.springframework.org/spring/docs/2.0.x/reference/index .html  MyEclipse bietet eine sehr gute Spring-Integration (zur Zeit allerdings nur Spring 1.3.3) http://www.myeclipse.org/  Spezialisten für Spring finden Sie unter http://www.itemis.de  Webseite des Autors (mit Blog und Wiki) http://www.planetes.de/thorsten-kamann/  Beispielanwendung mit Spring2, Hibernate und AOP http://thorque.wiki.com/Spring_2.0/Getting_Started_mit_Spring2_und_ Hibernate Copyright 2006 Thorsten Kamann 40