JAX Spring Day - Spring 2.1 - Jürgen Höller
Als ersten Speaker auf dem Spring Day kam Jürgen Höller zu Wort, seines Zeichens distinguished Engineer und Spring Chef-Entwickler.
Spring 2.1 wird Java 6 und Java EE 5 unterstützen. Es wird kein JDK 1.3 Support mehr haben - die letzten beiden Releases werden unterstützt. Zu JDK 1.6 wird zum Beispiel JDBC 4.0 unterstützt und JSR-223 (Rhino-Scripting). Andere Spring Releases unterstützen schon JDK 1.6.
Spring 2.1 unterstützt Java EE 5 z.B. EJB 3, JTA 1.1, Java Mail 1.4 etc. Ältere Releases unterstützen auch schon JSR 250 (@PostConstruct, @PreDestroy, @Resource). @Resource weißt auf einen Spring-Bean nach Namen oder JNDI.
Bei den Annotationen wird dann auch Autowiring unterstützt (@Autowired). Dazu muss man autowire="annotation" in die Konfiguration schreiben. Dadurch soll Autowiring by Type attraktiver werden, weil man es durch die Annotation besser konfigurieren kann.
@Required zur Markierung benötigter Abhängigkeiten ist jetzt durch depdency-check="annotation" oder default-dependency-check="annotation" konfigurierbar.
Weitere Annotationen werden möglicherweise später auch unterstützt. Und Jürgen reagiert hier auch gerne noch auf Input.
Spring unterstützt jetzt auch Aspectj-Loadtime-Weaving. Das nutzt auch die LoadTimeWeaver wie JPA, dadurch kann man es in einem ApplicationContext einfach aktivieren. Außerdem gibt es auch das beanName-Pointcut-Element für Aspect-Pointcut-Ausdrücke. Dabei werden die Beans durch den Namen des Spring-Beans ausgewählt. Dadurch kann man zum Beispiel mit bestimmten Spring-Bean-Namen bestimmte Pointcuts aktivieren. Dadurch kann man nun wirklich sehr leicht zwischen Spring AOP und AspectJ wählen.
Nächstes Thema ist JMS. In Spring 2.0.3 wurde z.B. für den DefaultMessageListenerContainer die maxConcurrentConsumers-Eigenschaft eingebaut, um die Anzahl der gleichzeitigen Consumer begrenzt. Im Spring 2.1 kommt nun auch Unterstützung für JCA 1.5. Dadurch kann man den JCA-Adapter, den es zum Beispiel auch für JMS-Provider gibt, im Spring ApplicationContext laufen lassen. Auch ein ApplicationContext kann jetzt ein JCA Resource Adapter werden. Das kann dann mit JMX gemanaged werden und man kann dort recht viel machen - die JDO Integration in J2EE lief ja auch über JCA.
Spring 2.1 hat den JPA-Support noch etwas verfeinert. Jetzt wird TopLink, Hibernate, Open JPA unterstützt und bestimmte Erweiterungen wie flush mode='never' werden einheitlich unterstützt. Die JPA-Implementierung bieten zwar alle diese Erweiterungen an, aber eben jeweils mit unterschiedlicher API oder Konfiguration. Spring vereinheitlicht das.
Außerdem wird die WebSphere-proprietäre Transaktions-API unterstützt. Dazu zählt zum Beispiel auch die Unterbrechung (Suspension) von Transaktionen. Die dabei verwendete API ist die offizielle von IBM freigegebene.
Eine wesentliche Innovation in Spring 2.0 waren die XML-Namespaces. In Spring 2.1 kommt ein jms-Namespace hinzu, der die Konfiguration der MessageListenerContainer ermöglicht. Möglicherweise gibt es in 2.1 auch ein jpa- und ein web-Namespace, der vielleicht aber auch erst in Spring 2.2 kommt.
Labels: Interface21, JAX, Jürgen Höller, Spring, Spring 2.1, Spring Day