40
Copyright 2006 Thorsten Kamann 1 Spring 2.0 – Spring 2.0 – Frühlingsgefühle für Entwickler Frühlingsgefühle für Entwickler von und mit Thorsten Kamann

Spring 2.0

Embed Size (px)

DESCRIPTION

Einführung in die neuen Features Spring 2. Es wurden die neuesten Features und Verbesserungen vorgestellt.

Citation preview

Page 1: Spring 2.0

Copyright 2006 Thorsten Kamann 1

Spring 2.0 – Spring 2.0 – Frühlingsgefühle für EntwicklerFrühlingsgefühle für Entwickler

von und mit Thorsten Kamann

Page 2: Spring 2.0

Copyright 2006 Thorsten Kamann 2

InhaltInhalt

EinführungEinführung KonfigurationKonfiguration AOPAOP DatenzugriffsschichtDatenzugriffsschicht WebWeb SonstigesSonstiges

Unterstützung dynamischer SprachenUnterstützung dynamischer Sprachen JMXJMX Task SchedulerTask Scheduler Java5 SupportJava5 Support

ZusammenfassungZusammenfassung LinksLinks

Page 3: Spring 2.0

Copyright 2006 Thorsten Kamann 3

EinführungEinführung

Page 4: Spring 2.0

Copyright 2006 Thorsten Kamann 4

Einführung: Was ist Spring?Einführung: Was ist Spring?

Spring ist eine Ansammlung von API's, die die Entwicklung mit der J2EE Spring ist eine Ansammlung von API's, die die Entwicklung mit der J2EE vereinfachtvereinfacht

Spring ist ein Dependency Injection ContainerSpring ist ein Dependency Injection Container Spring ist ein Programmiermodell für die Entwicklung Spring ist ein Programmiermodell für die Entwicklung

leichtgewichtiger Komponentenleichtgewichtiger Komponenten lose gekoppelter Komponentenlose gekoppelter Komponenten vom Framework unabhängiger Komponentenvom Framework unabhängiger Komponenten testbarer Komponententestbarer Komponenten

Spring konkurriert mit keinem bestehenden Framework, bietet allerdings eine Spring konkurriert mit keinem bestehenden Framework, bietet allerdings eine Integration anIntegration an

Page 5: Spring 2.0

Copyright 2006 Thorsten Kamann 5

Einführung: Leitsprüche Einführung: Leitsprüche

J2EE soll einfacher zu benutzen seinJ2EE soll einfacher zu benutzen sein Es ist besser gegen Interfaces zu programmieren als gegen konkrete KlassenEs ist besser gegen Interfaces zu programmieren als gegen konkrete Klassen JavaBeans bieten eine hervorragende Möglichkeit Anwendungen zu JavaBeans bieten eine hervorragende Möglichkeit Anwendungen zu

konfigurierenkonfigurieren OO-Design ist wichtiger als jede Implementierungstechnologie (z.B. J2EE)OO-Design ist wichtiger als jede Implementierungstechnologie (z.B. J2EE) Checked Exceptions werden in der J2EE zu häufig verwendet. Ein Framework Checked Exceptions werden in der J2EE zu häufig verwendet. Ein Framework

sollte den Entwickler nicht zwingen Exceptions zu behandeln, da er sollte den Entwickler nicht zwingen Exceptions zu behandeln, da er wahrscheinlich nichts konkretes damit anfangen kannwahrscheinlich nichts konkretes damit anfangen kann

Testing ist essenziell. Ein Framework sollte dem Entwickler das Testen so Testing ist essenziell. Ein Framework sollte dem Entwickler das Testen so einfach wie möglich macheneinfach wie möglich machen

Page 6: Spring 2.0

Copyright 2006 Thorsten Kamann 6

Einführung: ZieleEinführung: Ziele

Spring soll Spaß machenSpring soll Spaß machen

Der Anwendungscode soll nicht von Spring abhängig seinDer Anwendungscode soll nicht von Spring abhängig sein

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

Page 7: Spring 2.0

Copyright 2006 Thorsten Kamann 7

Einführung: FeaturesEinführung: Features

Leichtgewichtiger ContainerLeichtgewichtiger Container

Zentralisierte und automatisierte Konfiguration und Verdrahtung der Zentralisierte und automatisierte Konfiguration und Verdrahtung der AnwendungsobjekteAnwendungsobjekte

Nicht invasivNicht invasiv Fügt lose gekoppelte Komponenten (POJO's) zu komplexen Systemen Fügt lose gekoppelte Komponenten (POJO's) zu komplexen Systemen

zusammenzusammen SkalierbarSkalierbar Verbessert die Testbarkeit der Komponenten, indem sie zuerst unabhängig Verbessert die Testbarkeit der Komponenten, indem sie zuerst unabhängig

von der Serverinfrastruktur getestet werden könnenvon der Serverinfrastruktur getestet werden können

Page 8: Spring 2.0

Copyright 2006 Thorsten Kamann 8

Einführung: FeaturesEinführung: Features

Abstraktionsschicht für Transaktions-ManagementAbstraktionsschicht für Transaktions-Management

Erweiterbares Transaktions-ManagementErweiterbares Transaktions-Management Deklarative Konfiguration der Transaktionen ohne tief in das entsprechende Deklarative Konfiguration der Transaktionen ohne tief in das entsprechende

Framework einzusteigenFramework einzusteigen Generische Strategien für JTA und einfachen JDBC DataSource sind bereits Generische Strategien für JTA und einfachen JDBC DataSource sind bereits

enthaltenenthalten Im Gegensatz zu reinem JTA oder EJB CMP ist dieses Transaktions-Im Gegensatz zu reinem JTA oder EJB CMP ist dieses Transaktions-

Management nicht auf J2EE-Umgebungen beschränktManagement nicht auf J2EE-Umgebungen beschränkt

Page 9: Spring 2.0

Copyright 2006 Thorsten Kamann 9

Einführung: FeaturesEinführung: Features

Abstraktionsschicht für reines JDBCAbstraktionsschicht für reines JDBC

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

Page 10: Spring 2.0

Copyright 2006 Thorsten Kamann 10

Einführung: FeaturesEinführung: Features

Integration von populären O/R-MappernIntegration von populären O/R-Mappern

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

Page 11: Spring 2.0

Copyright 2006 Thorsten Kamann 11

Einführung: FeaturesEinführung: Features

AOP FunktionalitätAOP Funktionalität

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

Page 12: Spring 2.0

Copyright 2006 Thorsten Kamann 12

Einführung: FeaturesEinführung: Features

Flexibles MVC-Webapplication FrameworkFlexibles MVC-Webapplication Framework

Benutzt die Spring-Core FunktionalitätenBenutzt die Spring-Core Funktionalitäten Sehr konfigurierbar durch verschiedene Strategie-InterfacesSehr konfigurierbar durch verschiedene Strategie-Interfaces Kombinierbar mit den verschiedensten Viewtechnologien:Kombinierbar mit den verschiedensten Viewtechnologien:

JSPJSP VelocityVelocity TilesTiles iTextiText POIPOI

Page 13: Spring 2.0

Copyright 2006 Thorsten Kamann 13

Einführung: FeaturesEinführung: Features

Alle Features von Spring können sowohl innerhalb als auch außerhalb eines Alle Features von Spring können sowohl innerhalb als auch außerhalb eines J2EE-Container ausgeführt werdenJ2EE-Container ausgeführt werden

Ein zentraler Fokus von Spring ist es, Business-Komponenten und DAO's die keine Ein zentraler Fokus von Spring ist es, Business-Komponenten und DAO's die keine spezifischen Services der J2EE verwenden, auch ohne J2EE-Container spezifischen Services der J2EE verwenden, auch ohne J2EE-Container verwenden zu könnenverwenden zu können

Die Architektur von Spring ist sehr flexibel und sehr Low-Level angesiedeltDie Architektur von Spring ist sehr flexibel und sehr Low-Level angesiedelt Die JavaBeans-Konfiguration kann ohne AOP und MVC-Framework benutzt Die JavaBeans-Konfiguration kann ohne AOP und MVC-Framework benutzt

werdenwerden Dagegen benutzt das MVC-Framework die JavaBeans-KonfigurationDagegen benutzt das MVC-Framework die JavaBeans-Konfiguration

Spring ist lauffähig ab Java 1.3. Erweiterte Funktionen, wie z.B. AOP und Spring ist lauffähig ab Java 1.3. Erweiterte Funktionen, wie z.B. AOP und Annotation erwarten eine höhere Java VersionAnnotation erwarten eine höhere Java Version

Page 14: Spring 2.0

Copyright 2006 Thorsten Kamann 14

KonfigurationKonfiguration

Page 15: Spring 2.0

Copyright 2006 Thorsten Kamann 15

Konfiguration: XML-SchemasKonfiguration: XML-Schemas

Spring Konfigurationen basieren auf XML-SchemaSpring Konfigurationen basieren auf XML-Schema Aber es gibt immer noch eine DTDAber es gibt immer noch eine DTD

Durch XML-Schema ist eine direktere Konfiguration möglichDurch XML-Schema ist eine direktere Konfiguration möglich alt:alt:<bean id="simple" class="o.s.jndi.JndiObjectFactoryBean"><property name="jndiName" value="jdbc/MyDataSource"/>

</bean> neu:neu:<jee:jndi-lookup id="simple" jndi-name="jdbc/MyDataSource"/>

Dadurch kürzere und eindeutigere Konfigurationen Dadurch kürzere und eindeutigere Konfigurationen

Page 16: Spring 2.0

Copyright 2006 Thorsten Kamann 16

Konfiguration: Modularisierung der KonfigurationKonfiguration: Modularisierung der Konfiguration

Konfiguration wurde in verschiedene Module aufgeteiltKonfiguration wurde in verschiedene Module aufgeteilt Beans – Konfiguration von Spring-BeansBeans – Konfiguration von Spring-Beans Utils – Utilities wie Maps, Lists, Static FieldsUtils – Utilities wie Maps, Lists, Static Fields JEE – J2EE Konfiguration, wie EJB, JNDIJEE – J2EE Konfiguration, wie EJB, JNDI Lang – Konfigurationen in anderen Sprachen (Groovy, JRuby, BeanShell)Lang – Konfigurationen in anderen Sprachen (Groovy, JRuby, BeanShell) Tx - TransaktionenTx - Transaktionen Aop - AspekteAop - Aspekte Tool – Schema für die Anbindung von 3Tool – Schema für die Anbindung von 3rdrd Party Erweiterungen Party Erweiterungen

Jedes Schema besitzt einen eindeutigen NamensraumJedes Schema besitzt einen eindeutigen Namensraum

Page 17: Spring 2.0

Copyright 2006 Thorsten Kamann 17

Konfiguration: ErweiterungenKonfiguration: Erweiterungen

Konfiguration ist erweiterbar, z.B. fürKonfiguration ist erweiterbar, z.B. für 33rdrd Party Erweiterungen Party Erweiterungen Domänen spezifische KonfigurationsdialekteDomänen spezifische Konfigurationsdialekte

Tools-Schema unterstützt die Erstellung von ErweiterungenTools-Schema unterstützt die Erstellung von Erweiterungen Einfaches Deployment mittels JAREinfaches Deployment mittels JAR

Page 18: Spring 2.0

Copyright 2006 Thorsten Kamann 18

Konfiguration: Neue Bean ScopesKonfiguration: Neue Bean Scopes

Spring unterstützt 5 Bean Scopes Spring unterstützt 5 Bean Scopes SingletonSingleton PrototypePrototype RequestRequest SessionSession Global SessionGlobal Session

Request und Session sind nur bei Webanwendungen verfügbarRequest und Session sind nur bei Webanwendungen verfügbar Global Session ist nur bei Portal Anwendungen verfügbarGlobal Session ist nur bei Portal Anwendungen verfügbar

Page 19: Spring 2.0

Copyright 2006 Thorsten Kamann 19

AOPAOP

Page 20: Spring 2.0

Copyright 2006 Thorsten Kamann 20

AOPAOP

Spring hat 2 AOP-Implementation: SpringAOP und AspectJSpring hat 2 AOP-Implementation: SpringAOP und AspectJ SpringAOP ist einfacher und kann mit einfachen Beans arbeitenSpringAOP ist einfacher und kann mit einfachen Beans arbeiten AspectJ wird vollständig unterstützt und kann auch auf nicht-SpringBeans AspectJ wird vollständig unterstützt und kann auch auf nicht-SpringBeans

angewandt werdenangewandt werden SpringAOP unterstützt zur Zeit nur Methoden-basierte Join PointsSpringAOP unterstützt zur Zeit nur Methoden-basierte Join Points AOP-Autoproxies (default) oder CGLIB-Proxies können benutzen werdenAOP-Autoproxies (default) oder CGLIB-Proxies können benutzen werden Konfiguration von AOP kann mit Annotations (@AspectJ) oder XML-basiert Konfiguration von AOP kann mit Annotations (@AspectJ) oder XML-basiert

erfolgenerfolgen Aktivierung von @AspectJ erfolgt mit einem Aktivierung von @AspectJ erfolgt mit einem <aop:aspectj-autoproxy/> Pointcuts können mit der AspectJ-typischen Expression-Sprache definiert Pointcuts können mit der AspectJ-typischen Expression-Sprache definiert

werdenwerden

Page 21: Spring 2.0

Copyright 2006 Thorsten Kamann 21

AOP: Schema-basierter AOP SupportAOP: Schema-basierter AOP Support

Bietet eine Alternative zu der Annotation-basierten Konfiguration, wenn kein Bietet eine Alternative zu der Annotation-basierten Konfiguration, wenn kein Java5 verwendet werden kannJava5 verwendet werden kann

Das AOP XML-Schema bietet XML-basierte Konfiguration von Aspekten, Advices Das AOP XML-Schema bietet XML-basierte Konfiguration von Aspekten, Advices und Pointcutsund Pointcuts

Expression-Sprache ist die gleiche wie bei den AnnotationsExpression-Sprache ist die gleiche wie bei den Annotations<aop:config>

<aop:pointcut id="dataAccessOperation" expression="execution (* com.xyz.myapp.dao.*.*(..))"/>

<aop:aspect id="beforeExample" ref="aBean"><aop:before pointcut-ref="dataAccessOperation"

method="doCheck"/></aop:aspect>

</aop:config>

Page 22: Spring 2.0

Copyright 2006 Thorsten Kamann 22

DatenzugriffsschichtDatenzugriffsschicht

Page 23: Spring 2.0

Copyright 2006 Thorsten Kamann 23

Datenzugriffsschicht: TransaktionskonfigurationDatenzugriffsschicht: Transaktionskonfiguration

Stellt ein konsistentes Programmiermodell für verschiedene Transaktions-API's Stellt ein konsistentes Programmiermodell für verschiedene Transaktions-API's wie JPA, JTA, JDO, Hibernate, Toplink zur Verfügungwie JPA, JTA, JDO, Hibernate, Toplink zur Verfügung

Unterstützt eine programmatische und deklarative TransaktionskonfigurationUnterstützt eine programmatische und deklarative Transaktionskonfiguration Bietet ein vereinfachtes API für die programmatische TransaktionskonfigurationBietet ein vereinfachtes API für die programmatische Transaktionskonfiguration Deklarative Transaktionskonfiguration benutzt ein eigenes XML-Schema mit dem Deklarative Transaktionskonfiguration benutzt ein eigenes XML-Schema mit dem

Namensraum Namensraum tx Die eigentliche Konfiguration der Transaktionsregeln erfolgt mit AOPDie eigentliche Konfiguration der Transaktionsregeln erfolgt mit AOP Dadurch können beliebige Objekte in die Transaktionsklammer aufgenommen Dadurch können beliebige Objekte in die Transaktionsklammer aufgenommen

werden, auch nicht von Spring verwaltete Objektewerden, auch nicht von Spring verwaltete Objekte Spring unterstützt keine Remote-TransaktionenSpring unterstützt keine Remote-Transaktionen

Page 24: Spring 2.0

Copyright 2006 Thorsten Kamann 24

Datenzugriffsschicht: Transaktionskonfiguration (Beispiel)Datenzugriffsschicht: Transaktionskonfiguration (Beispiel)

<beans ... xsi:schemaLocation="..."><bean id="fService" class="DefaultFooService"/> <bean id="txManager".../> <tx:advice id="txAdvice" transaction-manager="txManager">

<tx:attributes> <tx:method name="get*" read-only="true"/> <tx:method name="*"/> </tx:attributes> </tx:advice> <aop:config> <aop:pointcut id="fS" expression="execution(*FooService.*(..))"/> <aop:advisor advice-ref="txAdvice" pointcut-ref="fs"/> </aop:config> </beans>

Page 25: Spring 2.0

Copyright 2006 Thorsten Kamann 25

Datenzugriffsschicht: Sonstige NeuerungenDatenzugriffsschicht: Sonstige Neuerungen

Spring 2.0 besitzt eine Java Persistence API (JPA) Abstraktionsschicht. So ist es Spring 2.0 besitzt eine Java Persistence API (JPA) Abstraktionsschicht. So ist es einfach, eine beliebige JPA-Implementierung einzubindeneinfach, eine beliebige JPA-Implementierung einzubinden

JPATemplate und JPADaoSupport arbeiten gegen die „Plain JPA-API“JPATemplate und JPADaoSupport arbeiten gegen die „Plain JPA-API“

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

Für JDBC bietet Spring ein Für JDBC bietet Spring ein NamedParameterTemplate. So können sprechende . So können sprechende Parameternamen in SQL-Abfragen anstatt der Parameternamen in SQL-Abfragen anstatt der ? benutzt werden benutzt werden

Für die Arbeit mit Java5 gibt es ein Für die Arbeit mit Java5 gibt es ein SimpleJdbcTemplate, das die Arbeit mit , das die Arbeit mit dem dem JdbcTemplate wesentlich vereinfacht wesentlich vereinfacht

Page 26: Spring 2.0

Copyright 2006 Thorsten Kamann 26

WEBWEB

Page 27: Spring 2.0

Copyright 2006 Thorsten Kamann 27

Web: Spring Web MVCWeb: Spring Web MVC

Es gibt eine neue Form-Taglibrary, mit der die Entwicklung von JSPs gegen das Es gibt eine neue Form-Taglibrary, mit der die Entwicklung von JSPs gegen das Spring Web MVC wesentlich vereinfacht wirdSpring Web MVC wesentlich vereinfacht wird

Das erzeugte HTML ist HTML 4.01/XHTML 1.0Das erzeugte HTML ist HTML 4.01/XHTML 1.0 Die Tags bekommen Zugriff auf das Command-Objekt und die Daten, mit Die Tags bekommen Zugriff auf das Command-Objekt und die Daten, mit

denen der Controller arbeitetdenen der Controller arbeitet Die JSPs werden dadurch wesentlich schlanker und besser wartbarDie JSPs werden dadurch wesentlich schlanker und besser wartbar Beispiel:Beispiel:<form:form><td><form:input path="firstName" /></td>

</form:form>ergibtergibt<td><input type=“text“ value=“Karl Karlson" /></td>

Page 28: Spring 2.0

Copyright 2006 Thorsten Kamann 28

Web: Spring Web MVCWeb: Spring Web MVC

Convention over ConfigurationConvention over Configuration Name des Controllers wird auf die Request-URL gemapptName des Controllers wird auf die Request-URL gemappt

WelcomeController --> --> /welcome* Name der Modelelemente werden automatisch ermittelt und an die View Name der Modelelemente werden automatisch ermittelt und an die View

übergebenübergebenx.y.User --> --> user

Automatisches Mapping der request-URL auf die logische ViewAutomatisches Mapping der request-URL auf die logische Viewhttp://localhost/register.jsp --> --> /WEB-INF/jsps/register.jsp

Page 29: Spring 2.0

Copyright 2006 Thorsten Kamann 29

Unterstützung dynamischer SprachenUnterstützung dynamischer Sprachen

Unterstützt werden Groovy, JRuby und BeanShellUnterstützt werden Groovy, JRuby und BeanShell Für den Support von dynamischen Sprachen gibt es ein eigenes XML-Schema mit Für den Support von dynamischen Sprachen gibt es ein eigenes XML-Schema mit

dem Namensraum dem Namensraum lang Jede unterstützte Sprache hat ein eigenes ElementJede unterstützte Sprache hat ein eigenes Element

<lang:jruby/> <lang:groovy/> <lang:bsh/>

Beans, die mit einer dieser Sprachen erstellt wurden, können automatisch Beans, die mit einer dieser Sprachen erstellt wurden, können automatisch refreshed werden (Attribute refreshed werden (Attribute refresh-check-delay="TIME_IN_MSEC")="TIME_IN_MSEC")

Inline-Scripts können direkt in der Spring-Konfigurationsdatei hinterlegt werdenInline-Scripts können direkt in der Spring-Konfigurationsdatei hinterlegt werden

Page 30: Spring 2.0

Copyright 2006 Thorsten Kamann 30

Unterstützung dynamischer Sprachen - SzenariosUnterstützung dynamischer Sprachen - Szenarios

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

Scripted ValidatorsScripted Validators Flexiblere Validatoren mit ungetypten SprachenFlexiblere Validatoren mit ungetypten Sprachen Schnell anpassbarer CodeSchnell anpassbarer Code

Ruby on RailsRuby on Rails Groovy on Rails (GRails)Groovy on Rails (GRails)

Page 31: Spring 2.0

Copyright 2006 Thorsten Kamann 31

JMXJMX

Page 32: Spring 2.0

Copyright 2006 Thorsten Kamann 32

JMXJMX

Spring JMX unterstützt einen Notification MechanismusSpring JMX unterstützt einen Notification Mechanismus Eine beliebige Anzahl von Eine beliebige Anzahl von NotificationListener für eine beliebige Anzahl für eine beliebige Anzahl

von von MBeans sind konfigurierbar sind konfigurierbar Ein von Spring-MBean kann bei dem Ein von Spring-MBean kann bei dem NotificationPublisher registriert registriert

werden werden

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

Page 33: Spring 2.0

Copyright 2006 Thorsten Kamann 33

Task SchedulerTask Scheduler

Page 34: Spring 2.0

Copyright 2006 Thorsten Kamann 34

Task SchedulerTask Scheduler

Der Task Scheduler bietet eine Abstraktionsschicht für das Konzept der Der Task Scheduler bietet eine Abstraktionsschicht für das Konzept der Executors (Thread Pools in Java 5)Executors (Thread Pools in Java 5)

Er stellt dieses Konzept auch für Umgebungen mit Java 1.3 und Java 1.4 zur 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 Verfügung und versteckt dabei die Implementierungsdetails zwischen den einzelnen JDKseinzelnen JDKs

Es werden synchrone, asynchrone und zeitgesteuerte Tasks unterstütztEs werden synchrone, asynchrone und zeitgesteuerte Tasks unterstützt Konfiguration erfolgt über einfache BeandefinitionenKonfiguration erfolgt über einfache Beandefinitionen<bean id="taskExecutor" class="org.sprin...ThreadPoolTaskExecutor">

...</bean><bean ...>

<constructor-arg ref="taskExecutor" /></bean>

Page 35: Spring 2.0

Copyright 2006 Thorsten Kamann 35

Java5 SupportJava5 Support

Page 36: Spring 2.0

Copyright 2006 Thorsten Kamann 36

Java5 SupportJava5 Support

Es können Javav5 Annotations verwendet werden, um die XML-Konfiguration Es können Javav5 Annotations verwendet werden, um die XML-Konfiguration schlank zu haltenschlank zu halten

Es gibt zur Zeit nur einige Annotations:Es gibt zur Zeit nur einige Annotations: @Transactional@Transactional @AspectJ@AspectJ @required@required

Wird eine Klasse mit @Transactional gekennzeichnet, verkürzt sich die Wird eine Klasse mit @Transactional gekennzeichnet, verkürzt sich die Konfiguration der Transaktionen, da sämtliche Informationen aus den Klassen Konfiguration der Transaktionen, da sämtliche Informationen aus den Klassen ausgelesen werden:ausgelesen werden:<tx:annotation-driven transaction-manager="txManager"/>

Page 37: Spring 2.0

Copyright 2006 Thorsten Kamann 37

ZusammenfassungZusammenfassung

Page 38: Spring 2.0

Copyright 2006 Thorsten Kamann 38

ZusammenfassungZusammenfassung

Spring 2.0 ist vollständig abwärtskompatibel. Alte Konfigurationen können Spring 2.0 ist vollständig abwärtskompatibel. Alte Konfigurationen können weiter verwendet werdenweiter verwendet werden

Die grössten Änderungen in Spring 2.0 betreffen die KonfigurationDie grössten Änderungen in Spring 2.0 betreffen die Konfiguration XML-Schema und die Aufteilung in verschiedene Module vereinfacht das XML-Schema und die Aufteilung in verschiedene Module vereinfacht das

Handling mit der grossen Menge an KonfigurationsmöglichkeitenHandling mit der grossen Menge an Konfigurationsmöglichkeiten Das voll integrierte AspectJ ist eine sehr mächtige Komponente, um Software-Das voll integrierte AspectJ ist eine sehr mächtige Komponente, um Software-

Systeme zu instrumentierenSysteme zu instrumentieren Der Support für dynamische Sprachen ermöglicht es, schnell und einfach Der Support für dynamische Sprachen ermöglicht es, schnell und einfach

Anwendungen zu erweitern und „dynamischer“ zu machenAnwendungen zu erweitern und „dynamischer“ zu machen Der Task-Scheduler bietet eine gute Alternative zum komplexeren JMS-Support Der Task-Scheduler bietet eine gute Alternative zum komplexeren JMS-Support

(allerdings nur, wenn JMS dazu benutzt wird bestimmte Tasks anzustoßen)(allerdings nur, wenn JMS dazu benutzt wird bestimmte Tasks anzustoßen) Der Java5-Support bietet mit seinen Annotations eine schöne Möglichkeit, Der Java5-Support bietet mit seinen Annotations eine schöne Möglichkeit,

spezifische Konfigurationen zurück in den Java-Code zu bringenspezifische Konfigurationen zurück in den Java-Code zu bringen

Page 39: Spring 2.0

Copyright 2006 Thorsten Kamann 39

LinksLinks

Page 40: Spring 2.0

Copyright 2006 Thorsten Kamann 40

LinksLinks

Homepage des SpringframeworksHomepage des Springframeworkshttp://www.springframework.org/

Dokumentation Spring 2.0Dokumentation Spring 2.0http://static.springframework.org/spring/docs/2.0.x/reference/index.html

MyEclipse bietet eine sehr gute Spring-Integration (zur Zeit allerdings nur Spring MyEclipse bietet eine sehr gute Spring-Integration (zur Zeit allerdings nur Spring 1.3.3)1.3.3)http://www.myeclipse.org/

Spezialisten für Spring finden Sie unterSpezialisten für Spring finden Sie unterhttp://www.itemis.de

Webseite des Autors (mit Blog und Wiki)Webseite des Autors (mit Blog und Wiki)http://www.planetes.de/thorsten-kamann/

Beispielanwendung mit Spring2, Hibernate und AOPBeispielanwendung mit Spring2, Hibernate und AOPhttp://thorque.wiki.com/Spring_2.0/Getting_Started_mit_Spring2_und_Hibernate