Spring 2.0

2,016 views
1,912 views

Published on

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

Published in: Business
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,016
On SlideShare
0
From Embeds
0
Number of Embeds
25
Actions
Shares
0
Downloads
16
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Spring 2.0

  1. 1. Spring 2.0 – Frühlingsgefühle für Entwickler von und mit Thorsten Kamann Copyright 2006 Thorsten Kamann 1
  2. 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. 3. Einführung Copyright 2006 Thorsten Kamann 3
  4. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 14. Konfiguration Copyright 2006 Thorsten Kamann 14
  15. 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. 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. 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. 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. 19. AOP Copyright 2006 Thorsten Kamann 19
  20. 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. 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. 22. Datenzugriffsschicht Copyright 2006 Thorsten Kamann 22
  23. 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. 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. 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. 26. WEB Copyright 2006 Thorsten Kamann 26
  27. 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. 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. 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. 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. 31. JMX Copyright 2006 Thorsten Kamann 31
  32. 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. 33. Task Scheduler Copyright 2006 Thorsten Kamann 33
  34. 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. 35. Java5 Support Copyright 2006 Thorsten Kamann 35
  36. 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. 37. Zusammenfassung Copyright 2006 Thorsten Kamann 37
  38. 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. 39. Links Copyright 2006 Thorsten Kamann 39
  40. 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

×