SlideShare a Scribd company logo
1 of 34
Spring Framework 3.0
                                                 The Next Generation


                                                                          JΓΌrgen HΓΆller
                                                       VP & Distinguished Engineer
                                                              SpringSource




Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
Agenda


         β€’ Quick Review: Spring 2.5
         β€’ Spring 3.0 Themes and Features
         β€’ Spring 3.0 Roadmap




Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited.   2
Spring Framework 2.5


         β€’ Comprehensive support for
           annotation-based configuration
                   – @Autowired
                              β€’ with optional @Qualifier or custom qualifier
                   – @Transactional
                   – @Service, @Repository, @Controller
         β€’ Common Java EE 5 annotations supported too
                   –      @PostConstruct, @PreDestroy
                   –      @PersistenceContext, @PersistenceUnit
                   –      @Resource, @EJB, @WebServiceRef
                   –      @TransactionAttribute


Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited.   3
Annotated Bean Component

         @Service
         public class RewardNetworkService
               implements RewardNetwork {

               @Autowired
               public RewardNetworkService(AccountRepository ar) {
                 …
               }

               @Transactional
               public RewardConfirmation rewardAccountFor(Dining d) {
                 …
               }
         }


Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited.   4
Minimal XML Bean Definitions


   <!– Activating annotation-based configuration -->

   <context:annotation-config/>

   <bean class=”com.myapp.rewards.RewardNetworkImpl”/>

   <bean class=”com.myapp.rewards.JdbcAccountRepository”/>


   <!– Plus shared infrastructure configuration beans:
      PlatformTransactionManager, DataSource, etc -->




Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited.   5
Test Context Framework

         @RunWith(SpringJUnit4ClassRunner.class)
         @ContextConfiguration
         public class RewardSystemIntegrationTests {

               @Autowired
               private RewardNetwork rewardNetwork;

               @Test
               @Transactional
               public void testRewardAccountForDining() {
                 // test in transaction with auto-rollback
               }
         }



Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited.   6
@MVC Controller Style

         @Controller
         public class MyController {

               private final MyService myService;

               @Autowired
               public MyController(MyService myService) {
                 this.myService = myService;
               }

               @RequestMapping("/removeBook")
               public String removeBook(@RequestParam("book") String bookId) {
                 this.myService.deleteBook(bookId);
                 return "redirect:myBooks";
               }
         }


Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited.   7
Spring 3.0 Themes


         β€’ Java 5+ foundation
                   – even stronger support for annotated components
         β€’ Spring Expression Language
                   – Unified EL++
         β€’ Comprehensive REST support
                   – and other Spring @MVC additions
         β€’ Declarative model validation
                   – Hibernate Validator, JSR 303
         β€’ Support for Portlet 2.0
                   – action/event/resource request mappings
         β€’ Early support for Java EE 6
                   – JSF 2.0, JPA 2.0, etc



Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited.   8
New Project Layout


         β€’ Framework modules revised
                   – now managed in Maven style
                   – one source tree per module jar
                              β€’ spring-beans.jar, spring-aop.jar, etc
                   – no spring.jar anymore!
         β€’ Built with new Spring build system as known
           from Spring Web Flow 2.0
                   –      Ivy-based "Spring Build" system
                   –      consistent deployment procedure
                   –      consistent dependency management
                   –      consistent generation of OSGi manifests


Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited.   9
Core APIs updated for Java 5


         β€’ BeanFactory interface returns typed bean
           instances as far as possible
                   – T getBean(String name, Class<T> requiredType)
                   – Map<String, T> getBeansOfType(Class<T> type)
         β€’ Spring's TaskExecutor interface extends
           java.util.concurrent.Executor now
                   – extended AsyncTaskExecutor supports standard
                     Callables with Futures
         β€’ Typed ApplicationListener<E>
                   – ApplicationEventMulticaster detects declared event
                     type and filters accordingly


Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited.   10
Portfolio Rearrangements


         β€’ Spring 3.0 includes a revised version of the
           Object/XML Mapping (OXM) module
                   – known from Spring Web Services
                   – supported for REST-style payload conversion
                   – also useful e.g. for SQL XML access
         β€’ Spring 3.0 features a revised binding and
           type conversion infrastructure
                   – including the capabilities of Spring Web Flow's binding
                   – stateless Java 5+ type converters with EL integration
                   – superseding standard JDK PropertyEditors




Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited.   11
Annotated Factory Methods


         β€’ Spring 3.0 includes the core functionality of the
           Spring JavaConfig project
                   – configuration classes defining managed beans
                   – common handling of annotated factory methods


         @Bean @Primary @Lazy
         public RewardsService rewardsService() {
           RewardsServiceImpl service = new RewardsServiceImpl();
           service.setDataSource(…);
           return service;
         }


Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited.   12
Use of Meta-Annotations


         β€’ More powerful options for custom annotations
                   – combining meta-annotations e.g. on stereotype
                   – automatically detected (no configuration necessary!)


         @Service
         @Scope("request")
         @Transactional(rollbackFor=Exception.class)
         @Retention(RetentionPolicy.RUNTIME)
         public @interface MyService {}

         @MyService
         public class RewardsService {
           …
         }

Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited.   13
EL in Bean Definitions


         <bean class="mycompany.RewardsTestDatabase">

               <property name="databaseName"
                   value="β€œ#{systemProperties.databaseName}”/>

               <property name="keyGenerator"
                   value="β€œ#{strategyBean.databaseKeyGenerator}”/>

         </bean>




Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited.   14
EL in Component Annotations


         @Repository
         public class RewardsTestDatabase {

               @Value(β€œ#{systemProperties.databaseName}”)
               public void setDatabaseName(String dbName) { … }

               @Value(β€œ#{strategyBean.databaseKeyGenerator}”)
               public void setKeyGenerator(KeyGenerator kg) { … }
         }




Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited.   15
Powerful Spring EL Parser


         β€’ Custom expression parser implementation
           shipped as part of Spring 3.0
                   – package org.springframework.expression
                   – next-generation expression engine
                              β€’ inspired by Spring Web Flow 2.0's expression support
                   – pluggable and customizable
         β€’ Compatible with Unified EL but significantly
           more powerful
                   – navigating bean properties, maps, etc
                   – method invocations
                   – construction of value objects


Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited.   16
EL Context Attributes


         β€’ Example showed access to EL attributes
                   – "systemProperties", "strategyBean"
                   – implicit references in expressions
         β€’ Implicit attributes to be exposed by default,
           depending on runtime context
                   – e.g. "systemProperties", "systemEnvironment"
                              β€’ global platform context
                   – access to all Spring-defined beans by name
                              β€’ similar to managed beans in JSF expressions
                   – extensible through Scope SPI
                              β€’ e.g. for step scope in Spring Batch



Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited.   17
Web Context Attributes


         β€’ Implicit web-specific attributes to be
           exposed by default as well
                   –      "contextParameters": web.xml init-params
                   –      "contextAttributes": ServletContext attributes
                   –      "request": current Servlet/PortletRequest
                   –      "session": current Http/PortletSession
         β€’ Exposure of all implicit JSF objects when
           running within a JSF request context
                   – "param", "initParam", "facesContext", etc
                   – full compatibility with JSF managed bean facility




Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited.   18
REST Support


         β€’ Spring MVC to provide first-class support for
           REST-style mappings
                   – extraction of URI template parameters
                   – content negotiation in view resolver
         β€’ Goal: native REST support within Spring
           MVC, for UI as well as non-UI usage
                   – in natural MVC style
         β€’ Alternative: using JAX-RS through integrated
           JAX-RS provider (e.g. Jersey)
                   – using the JAX-RS component model to build
                     programmatic resource endpoints




Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited.   19
REST in MVC - @PathVariable


           http://rewarddining.com/rewards/12345
         @RequestMapping(value = "/rewards/{id}", method = GET)
         public Reward reward(@PathVariable("id") long id) {
           return this.rewardsAdminService.findReward(id);
         }




Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited.   20
Different Representations


         β€’ JSON
                   GET http://rewarddining.com/accounts/1 accepts application/json
                   GET http://rewarddining.com/accounts/1.json


         β€’ XML
                   GET http://rewarddining.com/accounts/1 accepts application/xml
                   GET http://rewarddining.com/accounts/1.xml


         β€’ ATOM
                  GET http://rewarddining.com/accounts/1 accepts application/atom+xml
                  GET http://rewarddining.com/accounts/1.atom



Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited.   21
Common @MVC Refinements


         β€’ More options for handler method parameters
                   –      in addition to @RequestParam and @PathVariable
                   –      @RequestHeader: access to request headers
                   –      @CookieValue: HTTP cookie access
                   –      supported for Servlet MVC and Portlet MVC


         @RequestMapping("/show")
         public Reward show(@RequestHeader("region") long regionId,
               @CookieValue("language") String langId) {
           ...
         }


Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited.   22
Portlet 2.0 Support


         β€’ Portlet 2.0: major new capabilities
                   –      explicit action name concept for dispatching
                   –      resource requests for servlet-style serving
                   –      events for inter-portlet communication
                   –      portlet filters analogous to servlet filters
         β€’ Spring's Portlet MVC 3.0 to support explicit
           mapping annotations
                   – @ActionMapping, @RenderMapping,
                     @ResourceMapping, @EventMapping
                   – specializations of Spring's @RequestMapping
                              β€’ supporting action names, window states, etc



Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited.   23
Spring Portlet MVC 3.0

         @Controller
         @RequestMapping("EDIT")
         public class MyPortletController {
           …

               @ActionMapping("delete")
               public void removeBook(@RequestParam("book") String bookId) {
                 this.myService.deleteBook(bookId);
               }

               @EventMapping("BookUpdate")
               public void updateBook(BookUpdateEvent bookUpdate) {
                 // extract book entity data from event payload object
                 this.myService.updateBook(…);
               }
         }


Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited.   24
Model Validation

         public class Reward {
           @NotNull
           @Past
           private Date transactionDate;
         }

         In view:
         <form:input path="transactionDate">

         β€’ Same metadata can be used for persisting, rendering, etc
         β€’ Spring 3.0 RC1: to be supported for MVC data binding
         β€’ JSR-303 "Bean Validation" as the common ground



Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited.   25
Scoped Bean Serializability


         β€’ Problem with Spring 2.5: serializability of
           session and conversation objects
                   – when referencing shared service objects via Spring
                     dependency injection
                              β€’ and not marking them as transient
                   – typical situation: scoped bean instance holds on to
                     DataSource or the like
                              β€’ DataSource reference is not serializable
                              β€’ -> whole bean not serializable
         β€’ Solution: proxies that reobtain references
           on deserialization
                   – from current Spring WebApplicationContext


Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited.   26
Scheduling Enhancements


         β€’ Spring 3.0 introduces a major overhaul of
           the scheduling package
                   – extended java.util.concurrent support
                              β€’ prepared for JSR-236 "Concurrency Utilities for Java EE"
                   – TaskScheduler interface with Triggers
                              β€’ including cron expression triggers
                   – @Async annotation for asynchronous user methods
                              β€’ @Scheduled for cron-triggered methods
         β€’ XML scheduling namespace
                   – cron expressions with method references
                   – convenient executor service setup



Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited.   27
Spring 3.0 and Java EE 6


         β€’ Early Java EE 6 API support in Spring 3.0
                   – integration with JSF 2.0
                              β€’ full compatibility as managed bean facility
                   – integration with JPA 2.0
                              β€’ support for lock modes, query timeouts, etc
                   – support for JSR-303 Bean Validation annotations
                              β€’ through Hibernate Validator 4.0 integration
                   – all embeddable on Tomcat 5.5+ / J2EE 1.4+
         β€’ Spring 3.x: support for Java EE 6 platforms
                   – Servlet 3.0 (waiting for GlassFish 3 and Tomcat 7)
                   – JSR-236 "Concurrency Utilities for Java EE"



Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited.   28
Spring 3.0 Platform Support


         β€’ Requires Java 5 or above
                   – Java 6 automatically detected & supported
         β€’ Web container: Servlet 2.4 or above
                   – e.g. Tomcat 5.5 & 6.0
         β€’ Java EE level: J2EE 1.4 or above
                   – e.g. WebSphere 6.1 & 7.0
         β€’ Fully OSGi compatible out of the box
                   – featured in dm Server 2.0
         β€’ Also compatible with Google App Engine
                   – and other 'special' hosting environments



Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited.   29
Pruning & Deprecation in 3.0


         β€’ Some pruning: removal of outdated features
                   – Commons Attributes support
                              β€’ superseded by Java 5 annotations
                   – traditional TopLink API support
                              β€’ in favor of JPA (EclipseLink)
                   – subclass-style Struts 1.x support
         β€’ Some deprecation: superseded features
                   – traditional MVC form controller hierarchy
                              β€’ superseded by annotated controller style
                   – traditional JUnit 3.8 test class hierarchy
                              β€’ superseded by test context framework
                   – several outdated helper classes



Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited.   30
Spring 2.5 Mission Continued


         β€’ Spring 3 continues Spring 2.5's mission
                   – fully embracing Java 5 in the core Spring
                     programming and configuration model
                   – now with even the core framework requiring Java 5
                              β€’ all framework classes using Java 5 language syntax
         β€’ Backwards compatibility with Spring 2.5
                   – 100% compatibility of programming model
                   – 95% compatibility of extension points
                   – all previously deprecated API to be removed
                              β€’ Make sure you're not using outdated Spring 1.2 / 2.0
                                API anymore!




Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited.   31
Spring 3.0 Summary


         β€’ Spring 3.0 embraces REST and EL
                   – full-scale REST support
                   – broad Unified EL++ support in the core
         β€’ Spring 3.0 significantly extends and refines
           annotated web controllers
                   – RESTful URI mappings
                   – annotation-based model validation
         β€’ Spring 3.0 remains backwards compatible
           with Spring 2.5 on Java 5+
                   – enabling a smooth migration path



Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited.   32
Spring 3.0 Roadmap


         β€’ Spring Framework 3.0 M3 to be released
           any day now
                   – last milestone before RC1
         β€’ Spring Framework 3.0 RC1 scheduled for
           late May 2009
                   – GA to follow soon after
         β€’ Spring Framework 3.1 expected in
           Q4 2009
                   – full compatibility with Java EE 6 platforms
                   – first-class support for conversation management



Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited.   33
Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited.   34

More Related Content

What's hot

Java EE 6 & GlassFish v3 at Vancouver JUG, Jan 26, 2010
Java EE 6 & GlassFish v3 at Vancouver JUG, Jan 26, 2010Java EE 6 & GlassFish v3 at Vancouver JUG, Jan 26, 2010
Java EE 6 & GlassFish v3 at Vancouver JUG, Jan 26, 2010Arun Gupta
Β 
Understanding
Understanding Understanding
Understanding Arun Gupta
Β 
TDC 2011: The Java EE 7 Platform: Developing for the Cloud
TDC 2011: The Java EE 7 Platform: Developing for the CloudTDC 2011: The Java EE 7 Platform: Developing for the Cloud
TDC 2011: The Java EE 7 Platform: Developing for the CloudArun Gupta
Β 
JavaOne India 2011 - Servlets 3.0
JavaOne India 2011 - Servlets 3.0JavaOne India 2011 - Servlets 3.0
JavaOne India 2011 - Servlets 3.0Arun Gupta
Β 
Java EE 6 and GlassFish v3: Paving the path for future
Java EE 6 and GlassFish v3: Paving the path for futureJava EE 6 and GlassFish v3: Paving the path for future
Java EE 6 and GlassFish v3: Paving the path for futureArun Gupta
Β 
GIDS 2012: Java Message Service 2.0
GIDS 2012: Java Message Service 2.0GIDS 2012: Java Message Service 2.0
GIDS 2012: Java Message Service 2.0Arun Gupta
Β 
Annotation-Based Spring Portlet MVC
Annotation-Based Spring Portlet MVCAnnotation-Based Spring Portlet MVC
Annotation-Based Spring Portlet MVCJohn Lewis
Β 
Spring Framework - MVC
Spring Framework - MVCSpring Framework - MVC
Spring Framework - MVCDzmitry Naskou
Β 
Arun Gupta: London Java Community: Java EE 6 and GlassFish 3
Arun Gupta: London Java Community: Java EE 6 and GlassFish 3 Arun Gupta: London Java Community: Java EE 6 and GlassFish 3
Arun Gupta: London Java Community: Java EE 6 and GlassFish 3 Skills Matter
Β 
Java EE 6 & GlassFish = Less Code + More Power at CEJUG
Java EE 6 & GlassFish = Less Code + More Power at CEJUGJava EE 6 & GlassFish = Less Code + More Power at CEJUG
Java EE 6 & GlassFish = Less Code + More Power at CEJUGArun Gupta
Β 
Spring Portlet MVC
Spring Portlet MVCSpring Portlet MVC
Spring Portlet MVCJohn Lewis
Β 
Multi Client Development with Spring
Multi Client Development with SpringMulti Client Development with Spring
Multi Client Development with SpringJoshua Long
Β 
Introduction to java servlet 3.0 api javaone 2008
Introduction to java servlet 3.0 api javaone 2008Introduction to java servlet 3.0 api javaone 2008
Introduction to java servlet 3.0 api javaone 2008JavaEE Trainers
Β 
F428435966 odtug web-logic for developers
F428435966 odtug   web-logic for developersF428435966 odtug   web-logic for developers
F428435966 odtug web-logic for developersMeng He
Β 
Multi Client Development with Spring
Multi Client Development with SpringMulti Client Development with Spring
Multi Client Development with SpringJoshua Long
Β 

What's hot (18)

Java EE 6 & GlassFish v3 at Vancouver JUG, Jan 26, 2010
Java EE 6 & GlassFish v3 at Vancouver JUG, Jan 26, 2010Java EE 6 & GlassFish v3 at Vancouver JUG, Jan 26, 2010
Java EE 6 & GlassFish v3 at Vancouver JUG, Jan 26, 2010
Β 
Understanding
Understanding Understanding
Understanding
Β 
TDC 2011: The Java EE 7 Platform: Developing for the Cloud
TDC 2011: The Java EE 7 Platform: Developing for the CloudTDC 2011: The Java EE 7 Platform: Developing for the Cloud
TDC 2011: The Java EE 7 Platform: Developing for the Cloud
Β 
JavaOne India 2011 - Servlets 3.0
JavaOne India 2011 - Servlets 3.0JavaOne India 2011 - Servlets 3.0
JavaOne India 2011 - Servlets 3.0
Β 
Java EE 6 and GlassFish v3: Paving the path for future
Java EE 6 and GlassFish v3: Paving the path for futureJava EE 6 and GlassFish v3: Paving the path for future
Java EE 6 and GlassFish v3: Paving the path for future
Β 
GIDS 2012: Java Message Service 2.0
GIDS 2012: Java Message Service 2.0GIDS 2012: Java Message Service 2.0
GIDS 2012: Java Message Service 2.0
Β 
Spring WebApplication development
Spring WebApplication developmentSpring WebApplication development
Spring WebApplication development
Β 
Annotation-Based Spring Portlet MVC
Annotation-Based Spring Portlet MVCAnnotation-Based Spring Portlet MVC
Annotation-Based Spring Portlet MVC
Β 
Web Technologies in Java EE 7
Web Technologies in Java EE 7Web Technologies in Java EE 7
Web Technologies in Java EE 7
Β 
Spring Framework - MVC
Spring Framework - MVCSpring Framework - MVC
Spring Framework - MVC
Β 
Arun Gupta: London Java Community: Java EE 6 and GlassFish 3
Arun Gupta: London Java Community: Java EE 6 and GlassFish 3 Arun Gupta: London Java Community: Java EE 6 and GlassFish 3
Arun Gupta: London Java Community: Java EE 6 and GlassFish 3
Β 
Java EE 6 & GlassFish = Less Code + More Power at CEJUG
Java EE 6 & GlassFish = Less Code + More Power at CEJUGJava EE 6 & GlassFish = Less Code + More Power at CEJUG
Java EE 6 & GlassFish = Less Code + More Power at CEJUG
Β 
Spring Portlet MVC
Spring Portlet MVCSpring Portlet MVC
Spring Portlet MVC
Β 
Multi Client Development with Spring
Multi Client Development with SpringMulti Client Development with Spring
Multi Client Development with Spring
Β 
Introduction to java servlet 3.0 api javaone 2008
Introduction to java servlet 3.0 api javaone 2008Introduction to java servlet 3.0 api javaone 2008
Introduction to java servlet 3.0 api javaone 2008
Β 
F428435966 odtug web-logic for developers
F428435966 odtug   web-logic for developersF428435966 odtug   web-logic for developers
F428435966 odtug web-logic for developers
Β 
Spring mvc
Spring mvcSpring mvc
Spring mvc
Β 
Multi Client Development with Spring
Multi Client Development with SpringMulti Client Development with Spring
Multi Client Development with Spring
Β 

Viewers also liked

Galaxy S II: samsung publica una guΓ­a para la actualizaciΓ³n a Android ICS
Galaxy S II: samsung publica una guΓ­a para la actualizaciΓ³n a Android ICSGalaxy S II: samsung publica una guΓ­a para la actualizaciΓ³n a Android ICS
Galaxy S II: samsung publica una guΓ­a para la actualizaciΓ³n a Android ICSDavid Motta Baldarrago
Β 
Android web services - Spring Android
Android web services - Spring AndroidAndroid web services - Spring Android
Android web services - Spring AndroidDavid Motta Baldarrago
Β 
El Rol de un Arquitecto de Software
El Rol de un Arquitecto de SoftwareEl Rol de un Arquitecto de Software
El Rol de un Arquitecto de SoftwareSorey GarcΓ­a
Β 
Modelo Del Negocio con RUP y UML Parte 3
Modelo Del Negocio con RUP y UML Parte 3Modelo Del Negocio con RUP y UML Parte 3
Modelo Del Negocio con RUP y UML Parte 3David Motta Baldarrago
Β 

Viewers also liked (6)

Galaxy S II: samsung publica una guΓ­a para la actualizaciΓ³n a Android ICS
Galaxy S II: samsung publica una guΓ­a para la actualizaciΓ³n a Android ICSGalaxy S II: samsung publica una guΓ­a para la actualizaciΓ³n a Android ICS
Galaxy S II: samsung publica una guΓ­a para la actualizaciΓ³n a Android ICS
Β 
Simple Jdbc With Spring 2.5
Simple Jdbc With Spring 2.5Simple Jdbc With Spring 2.5
Simple Jdbc With Spring 2.5
Β 
Android web services - Spring Android
Android web services - Spring AndroidAndroid web services - Spring Android
Android web services - Spring Android
Β 
Los mejores trucos de Asterisk
Los mejores trucos de AsteriskLos mejores trucos de Asterisk
Los mejores trucos de Asterisk
Β 
El Rol de un Arquitecto de Software
El Rol de un Arquitecto de SoftwareEl Rol de un Arquitecto de Software
El Rol de un Arquitecto de Software
Β 
Modelo Del Negocio con RUP y UML Parte 3
Modelo Del Negocio con RUP y UML Parte 3Modelo Del Negocio con RUP y UML Parte 3
Modelo Del Negocio con RUP y UML Parte 3
Β 

Similar to Lo nuevo en Spring 3.0

Spring 3.1: a Walking Tour
Spring 3.1: a Walking TourSpring 3.1: a Walking Tour
Spring 3.1: a Walking TourJoshua Long
Β 
Spring 3.1 in a Nutshell - JAX London 2011
Spring 3.1 in a Nutshell - JAX London 2011Spring 3.1 in a Nutshell - JAX London 2011
Spring 3.1 in a Nutshell - JAX London 2011Sam Brannen
Β 
Spring Day | Spring 3.1 in a Nutshell | Sam Brannen
Spring Day | Spring 3.1 in a Nutshell | Sam BrannenSpring Day | Spring 3.1 in a Nutshell | Sam Brannen
Spring Day | Spring 3.1 in a Nutshell | Sam BrannenJAX London
Β 
Spring 3.1 to 3.2 in a Nutshell - Spring I/O 2012
Spring 3.1 to 3.2 in a Nutshell - Spring I/O 2012Spring 3.1 to 3.2 in a Nutshell - Spring I/O 2012
Spring 3.1 to 3.2 in a Nutshell - Spring I/O 2012Sam Brannen
Β 
Java EE 6 & GlassFish = Less Code + More Power @ DevIgnition
Java EE 6 & GlassFish = Less Code + More Power @ DevIgnitionJava EE 6 & GlassFish = Less Code + More Power @ DevIgnition
Java EE 6 & GlassFish = Less Code + More Power @ DevIgnitionArun Gupta
Β 
Java EE 6 = Less Code + More Power
Java EE 6 = Less Code + More PowerJava EE 6 = Less Code + More Power
Java EE 6 = Less Code + More PowerArun Gupta
Β 
Spring 3.1 in a Nutshell
Spring 3.1 in a NutshellSpring 3.1 in a Nutshell
Spring 3.1 in a NutshellSam Brannen
Β 
Spring 3 - Der dritte FrΓΌhling
Spring 3 - Der dritte FrΓΌhlingSpring 3 - Der dritte FrΓΌhling
Spring 3 - Der dritte FrΓΌhlingThorsten Kamann
Β 
A Walking Tour of (almost) all of Springdom
A Walking Tour of (almost) all of Springdom A Walking Tour of (almost) all of Springdom
A Walking Tour of (almost) all of Springdom Joshua Long
Β 
Developing Agile Java Applications using Spring tools
Developing Agile Java Applications using Spring toolsDeveloping Agile Java Applications using Spring tools
Developing Agile Java Applications using Spring toolsSathish Chittibabu
Β 
Introduction to Spring Framework
Introduction to Spring FrameworkIntroduction to Spring Framework
Introduction to Spring Framework Serhat Can
Β 
Contextual Dependency Injection for Apachecon 2010
Contextual Dependency Injection for Apachecon 2010Contextual Dependency Injection for Apachecon 2010
Contextual Dependency Injection for Apachecon 2010Rohit Kelapure
Β 
Java EE 6 & GlassFish 3: Light-weight, Extensible, and Powerful @ JAX London ...
Java EE 6 & GlassFish 3: Light-weight, Extensible, and Powerful @ JAX London ...Java EE 6 & GlassFish 3: Light-weight, Extensible, and Powerful @ JAX London ...
Java EE 6 & GlassFish 3: Light-weight, Extensible, and Powerful @ JAX London ...Arun Gupta
Β 
Spring MVC framework
Spring MVC frameworkSpring MVC framework
Spring MVC frameworkMohit Gupta
Β 
What's New in Spring 3.0
What's New in Spring 3.0What's New in Spring 3.0
What's New in Spring 3.0Sam Brannen
Β 
Java spring framework
Java spring frameworkJava spring framework
Java spring frameworkRajiv Gupta
Β 
Boston 2011 OTN Developer Days - Java EE 6
Boston 2011 OTN Developer Days - Java EE 6Boston 2011 OTN Developer Days - Java EE 6
Boston 2011 OTN Developer Days - Java EE 6Arun Gupta
Β 
Struts An Open-source Architecture for Web Applications
Struts An Open-source Architecture for Web ApplicationsStruts An Open-source Architecture for Web Applications
Struts An Open-source Architecture for Web Applicationselliando dias
Β 

Similar to Lo nuevo en Spring 3.0 (20)

Spring 3.1: a Walking Tour
Spring 3.1: a Walking TourSpring 3.1: a Walking Tour
Spring 3.1: a Walking Tour
Β 
Spring 3.1 in a Nutshell - JAX London 2011
Spring 3.1 in a Nutshell - JAX London 2011Spring 3.1 in a Nutshell - JAX London 2011
Spring 3.1 in a Nutshell - JAX London 2011
Β 
Spring Day | Spring 3.1 in a Nutshell | Sam Brannen
Spring Day | Spring 3.1 in a Nutshell | Sam BrannenSpring Day | Spring 3.1 in a Nutshell | Sam Brannen
Spring Day | Spring 3.1 in a Nutshell | Sam Brannen
Β 
Spring 3.1 to 3.2 in a Nutshell - Spring I/O 2012
Spring 3.1 to 3.2 in a Nutshell - Spring I/O 2012Spring 3.1 to 3.2 in a Nutshell - Spring I/O 2012
Spring 3.1 to 3.2 in a Nutshell - Spring I/O 2012
Β 
Java EE 6 & GlassFish = Less Code + More Power @ DevIgnition
Java EE 6 & GlassFish = Less Code + More Power @ DevIgnitionJava EE 6 & GlassFish = Less Code + More Power @ DevIgnition
Java EE 6 & GlassFish = Less Code + More Power @ DevIgnition
Β 
Java EE 6 = Less Code + More Power
Java EE 6 = Less Code + More PowerJava EE 6 = Less Code + More Power
Java EE 6 = Less Code + More Power
Β 
Spring 3.1 in a Nutshell
Spring 3.1 in a NutshellSpring 3.1 in a Nutshell
Spring 3.1 in a Nutshell
Β 
Spring 3 - Der dritte FrΓΌhling
Spring 3 - Der dritte FrΓΌhlingSpring 3 - Der dritte FrΓΌhling
Spring 3 - Der dritte FrΓΌhling
Β 
Spring introduction
Spring introductionSpring introduction
Spring introduction
Β 
A Walking Tour of (almost) all of Springdom
A Walking Tour of (almost) all of Springdom A Walking Tour of (almost) all of Springdom
A Walking Tour of (almost) all of Springdom
Β 
Developing Agile Java Applications using Spring tools
Developing Agile Java Applications using Spring toolsDeveloping Agile Java Applications using Spring tools
Developing Agile Java Applications using Spring tools
Β 
Introduction to Spring Framework
Introduction to Spring FrameworkIntroduction to Spring Framework
Introduction to Spring Framework
Β 
Contextual Dependency Injection for Apachecon 2010
Contextual Dependency Injection for Apachecon 2010Contextual Dependency Injection for Apachecon 2010
Contextual Dependency Injection for Apachecon 2010
Β 
Java EE 6 & GlassFish 3: Light-weight, Extensible, and Powerful @ JAX London ...
Java EE 6 & GlassFish 3: Light-weight, Extensible, and Powerful @ JAX London ...Java EE 6 & GlassFish 3: Light-weight, Extensible, and Powerful @ JAX London ...
Java EE 6 & GlassFish 3: Light-weight, Extensible, and Powerful @ JAX London ...
Β 
Spring MVC framework
Spring MVC frameworkSpring MVC framework
Spring MVC framework
Β 
What's New in Spring 3.0
What's New in Spring 3.0What's New in Spring 3.0
What's New in Spring 3.0
Β 
Spring Boot
Spring BootSpring Boot
Spring Boot
Β 
Java spring framework
Java spring frameworkJava spring framework
Java spring framework
Β 
Boston 2011 OTN Developer Days - Java EE 6
Boston 2011 OTN Developer Days - Java EE 6Boston 2011 OTN Developer Days - Java EE 6
Boston 2011 OTN Developer Days - Java EE 6
Β 
Struts An Open-source Architecture for Web Applications
Struts An Open-source Architecture for Web ApplicationsStruts An Open-source Architecture for Web Applications
Struts An Open-source Architecture for Web Applications
Β 

More from David Motta Baldarrago

Scjp Sun Certified Programmer For Java 6 Exam 310 065
Scjp Sun Certified Programmer For Java 6 Exam 310 065Scjp Sun Certified Programmer For Java 6 Exam 310 065
Scjp Sun Certified Programmer For Java 6 Exam 310 065David Motta Baldarrago
Β 
Modelo Del Negocio con RUP y UML Parte 2
Modelo Del Negocio con RUP y UML Parte 2Modelo Del Negocio con RUP y UML Parte 2
Modelo Del Negocio con RUP y UML Parte 2David Motta Baldarrago
Β 
Modelo Del Negocio con RUP y UML Parte 1
Modelo Del Negocio con RUP y UML Parte 1Modelo Del Negocio con RUP y UML Parte 1
Modelo Del Negocio con RUP y UML Parte 1David Motta Baldarrago
Β 
Instalacion Debian + Asterisk + FreePbx + A2Billing
Instalacion Debian + Asterisk + FreePbx + A2BillingInstalacion Debian + Asterisk + FreePbx + A2Billing
Instalacion Debian + Asterisk + FreePbx + A2BillingDavid Motta Baldarrago
Β 

More from David Motta Baldarrago (10)

Repositorio SVN Google Code
Repositorio SVN Google CodeRepositorio SVN Google Code
Repositorio SVN Google Code
Β 
DiseΓ±o Agil con TDD
DiseΓ±o Agil con TDDDiseΓ±o Agil con TDD
DiseΓ±o Agil con TDD
Β 
Scjp Sun Certified Programmer For Java 6 Exam 310 065
Scjp Sun Certified Programmer For Java 6 Exam 310 065Scjp Sun Certified Programmer For Java 6 Exam 310 065
Scjp Sun Certified Programmer For Java 6 Exam 310 065
Β 
Modelo Del Negocio con RUP y UML Parte 2
Modelo Del Negocio con RUP y UML Parte 2Modelo Del Negocio con RUP y UML Parte 2
Modelo Del Negocio con RUP y UML Parte 2
Β 
Modelo Del Negocio con RUP y UML Parte 1
Modelo Del Negocio con RUP y UML Parte 1Modelo Del Negocio con RUP y UML Parte 1
Modelo Del Negocio con RUP y UML Parte 1
Β 
Documentacion De Los Procesos
Documentacion De Los ProcesosDocumentacion De Los Procesos
Documentacion De Los Procesos
Β 
Upgrade Zaptel to DAHDI
Upgrade Zaptel to DAHDIUpgrade Zaptel to DAHDI
Upgrade Zaptel to DAHDI
Β 
Instalacion de Elastix
Instalacion de ElastixInstalacion de Elastix
Instalacion de Elastix
Β 
Elastix Without Tears
Elastix Without TearsElastix Without Tears
Elastix Without Tears
Β 
Instalacion Debian + Asterisk + FreePbx + A2Billing
Instalacion Debian + Asterisk + FreePbx + A2BillingInstalacion Debian + Asterisk + FreePbx + A2Billing
Instalacion Debian + Asterisk + FreePbx + A2Billing
Β 

Recently uploaded

Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
Β 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
Β 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
Β 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
Β 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
Β 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
Β 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
Β 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
Β 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
Β 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
Β 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
Β 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
Β 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel AraΓΊjo
Β 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
Β 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
Β 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
Β 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
Β 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
Β 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
Β 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
Β 

Recently uploaded (20)

Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
Β 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
Β 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
Β 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
Β 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Β 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
Β 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
Β 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Β 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
Β 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
Β 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
Β 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
Β 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Β 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Β 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
Β 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
Β 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
Β 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
Β 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Β 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
Β 

Lo nuevo en Spring 3.0

  • 1. Spring Framework 3.0 The Next Generation JΓΌrgen HΓΆller VP & Distinguished Engineer SpringSource Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
  • 2. Agenda β€’ Quick Review: Spring 2.5 β€’ Spring 3.0 Themes and Features β€’ Spring 3.0 Roadmap Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 2
  • 3. Spring Framework 2.5 β€’ Comprehensive support for annotation-based configuration – @Autowired β€’ with optional @Qualifier or custom qualifier – @Transactional – @Service, @Repository, @Controller β€’ Common Java EE 5 annotations supported too – @PostConstruct, @PreDestroy – @PersistenceContext, @PersistenceUnit – @Resource, @EJB, @WebServiceRef – @TransactionAttribute Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 3
  • 4. Annotated Bean Component @Service public class RewardNetworkService implements RewardNetwork { @Autowired public RewardNetworkService(AccountRepository ar) { … } @Transactional public RewardConfirmation rewardAccountFor(Dining d) { … } } Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 4
  • 5. Minimal XML Bean Definitions <!– Activating annotation-based configuration --> <context:annotation-config/> <bean class=”com.myapp.rewards.RewardNetworkImpl”/> <bean class=”com.myapp.rewards.JdbcAccountRepository”/> <!– Plus shared infrastructure configuration beans: PlatformTransactionManager, DataSource, etc --> Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 5
  • 6. Test Context Framework @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration public class RewardSystemIntegrationTests { @Autowired private RewardNetwork rewardNetwork; @Test @Transactional public void testRewardAccountForDining() { // test in transaction with auto-rollback } } Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 6
  • 7. @MVC Controller Style @Controller public class MyController { private final MyService myService; @Autowired public MyController(MyService myService) { this.myService = myService; } @RequestMapping("/removeBook") public String removeBook(@RequestParam("book") String bookId) { this.myService.deleteBook(bookId); return "redirect:myBooks"; } } Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 7
  • 8. Spring 3.0 Themes β€’ Java 5+ foundation – even stronger support for annotated components β€’ Spring Expression Language – Unified EL++ β€’ Comprehensive REST support – and other Spring @MVC additions β€’ Declarative model validation – Hibernate Validator, JSR 303 β€’ Support for Portlet 2.0 – action/event/resource request mappings β€’ Early support for Java EE 6 – JSF 2.0, JPA 2.0, etc Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 8
  • 9. New Project Layout β€’ Framework modules revised – now managed in Maven style – one source tree per module jar β€’ spring-beans.jar, spring-aop.jar, etc – no spring.jar anymore! β€’ Built with new Spring build system as known from Spring Web Flow 2.0 – Ivy-based "Spring Build" system – consistent deployment procedure – consistent dependency management – consistent generation of OSGi manifests Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 9
  • 10. Core APIs updated for Java 5 β€’ BeanFactory interface returns typed bean instances as far as possible – T getBean(String name, Class<T> requiredType) – Map<String, T> getBeansOfType(Class<T> type) β€’ Spring's TaskExecutor interface extends java.util.concurrent.Executor now – extended AsyncTaskExecutor supports standard Callables with Futures β€’ Typed ApplicationListener<E> – ApplicationEventMulticaster detects declared event type and filters accordingly Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 10
  • 11. Portfolio Rearrangements β€’ Spring 3.0 includes a revised version of the Object/XML Mapping (OXM) module – known from Spring Web Services – supported for REST-style payload conversion – also useful e.g. for SQL XML access β€’ Spring 3.0 features a revised binding and type conversion infrastructure – including the capabilities of Spring Web Flow's binding – stateless Java 5+ type converters with EL integration – superseding standard JDK PropertyEditors Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 11
  • 12. Annotated Factory Methods β€’ Spring 3.0 includes the core functionality of the Spring JavaConfig project – configuration classes defining managed beans – common handling of annotated factory methods @Bean @Primary @Lazy public RewardsService rewardsService() { RewardsServiceImpl service = new RewardsServiceImpl(); service.setDataSource(…); return service; } Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 12
  • 13. Use of Meta-Annotations β€’ More powerful options for custom annotations – combining meta-annotations e.g. on stereotype – automatically detected (no configuration necessary!) @Service @Scope("request") @Transactional(rollbackFor=Exception.class) @Retention(RetentionPolicy.RUNTIME) public @interface MyService {} @MyService public class RewardsService { … } Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 13
  • 14. EL in Bean Definitions <bean class="mycompany.RewardsTestDatabase"> <property name="databaseName" value="β€œ#{systemProperties.databaseName}”/> <property name="keyGenerator" value="β€œ#{strategyBean.databaseKeyGenerator}”/> </bean> Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 14
  • 15. EL in Component Annotations @Repository public class RewardsTestDatabase { @Value(β€œ#{systemProperties.databaseName}”) public void setDatabaseName(String dbName) { … } @Value(β€œ#{strategyBean.databaseKeyGenerator}”) public void setKeyGenerator(KeyGenerator kg) { … } } Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 15
  • 16. Powerful Spring EL Parser β€’ Custom expression parser implementation shipped as part of Spring 3.0 – package org.springframework.expression – next-generation expression engine β€’ inspired by Spring Web Flow 2.0's expression support – pluggable and customizable β€’ Compatible with Unified EL but significantly more powerful – navigating bean properties, maps, etc – method invocations – construction of value objects Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 16
  • 17. EL Context Attributes β€’ Example showed access to EL attributes – "systemProperties", "strategyBean" – implicit references in expressions β€’ Implicit attributes to be exposed by default, depending on runtime context – e.g. "systemProperties", "systemEnvironment" β€’ global platform context – access to all Spring-defined beans by name β€’ similar to managed beans in JSF expressions – extensible through Scope SPI β€’ e.g. for step scope in Spring Batch Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 17
  • 18. Web Context Attributes β€’ Implicit web-specific attributes to be exposed by default as well – "contextParameters": web.xml init-params – "contextAttributes": ServletContext attributes – "request": current Servlet/PortletRequest – "session": current Http/PortletSession β€’ Exposure of all implicit JSF objects when running within a JSF request context – "param", "initParam", "facesContext", etc – full compatibility with JSF managed bean facility Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 18
  • 19. REST Support β€’ Spring MVC to provide first-class support for REST-style mappings – extraction of URI template parameters – content negotiation in view resolver β€’ Goal: native REST support within Spring MVC, for UI as well as non-UI usage – in natural MVC style β€’ Alternative: using JAX-RS through integrated JAX-RS provider (e.g. Jersey) – using the JAX-RS component model to build programmatic resource endpoints Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 19
  • 20. REST in MVC - @PathVariable http://rewarddining.com/rewards/12345 @RequestMapping(value = "/rewards/{id}", method = GET) public Reward reward(@PathVariable("id") long id) { return this.rewardsAdminService.findReward(id); } Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 20
  • 21. Different Representations β€’ JSON GET http://rewarddining.com/accounts/1 accepts application/json GET http://rewarddining.com/accounts/1.json β€’ XML GET http://rewarddining.com/accounts/1 accepts application/xml GET http://rewarddining.com/accounts/1.xml β€’ ATOM GET http://rewarddining.com/accounts/1 accepts application/atom+xml GET http://rewarddining.com/accounts/1.atom Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 21
  • 22. Common @MVC Refinements β€’ More options for handler method parameters – in addition to @RequestParam and @PathVariable – @RequestHeader: access to request headers – @CookieValue: HTTP cookie access – supported for Servlet MVC and Portlet MVC @RequestMapping("/show") public Reward show(@RequestHeader("region") long regionId, @CookieValue("language") String langId) { ... } Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 22
  • 23. Portlet 2.0 Support β€’ Portlet 2.0: major new capabilities – explicit action name concept for dispatching – resource requests for servlet-style serving – events for inter-portlet communication – portlet filters analogous to servlet filters β€’ Spring's Portlet MVC 3.0 to support explicit mapping annotations – @ActionMapping, @RenderMapping, @ResourceMapping, @EventMapping – specializations of Spring's @RequestMapping β€’ supporting action names, window states, etc Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 23
  • 24. Spring Portlet MVC 3.0 @Controller @RequestMapping("EDIT") public class MyPortletController { … @ActionMapping("delete") public void removeBook(@RequestParam("book") String bookId) { this.myService.deleteBook(bookId); } @EventMapping("BookUpdate") public void updateBook(BookUpdateEvent bookUpdate) { // extract book entity data from event payload object this.myService.updateBook(…); } } Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 24
  • 25. Model Validation public class Reward { @NotNull @Past private Date transactionDate; } In view: <form:input path="transactionDate"> β€’ Same metadata can be used for persisting, rendering, etc β€’ Spring 3.0 RC1: to be supported for MVC data binding β€’ JSR-303 "Bean Validation" as the common ground Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 25
  • 26. Scoped Bean Serializability β€’ Problem with Spring 2.5: serializability of session and conversation objects – when referencing shared service objects via Spring dependency injection β€’ and not marking them as transient – typical situation: scoped bean instance holds on to DataSource or the like β€’ DataSource reference is not serializable β€’ -> whole bean not serializable β€’ Solution: proxies that reobtain references on deserialization – from current Spring WebApplicationContext Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 26
  • 27. Scheduling Enhancements β€’ Spring 3.0 introduces a major overhaul of the scheduling package – extended java.util.concurrent support β€’ prepared for JSR-236 "Concurrency Utilities for Java EE" – TaskScheduler interface with Triggers β€’ including cron expression triggers – @Async annotation for asynchronous user methods β€’ @Scheduled for cron-triggered methods β€’ XML scheduling namespace – cron expressions with method references – convenient executor service setup Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 27
  • 28. Spring 3.0 and Java EE 6 β€’ Early Java EE 6 API support in Spring 3.0 – integration with JSF 2.0 β€’ full compatibility as managed bean facility – integration with JPA 2.0 β€’ support for lock modes, query timeouts, etc – support for JSR-303 Bean Validation annotations β€’ through Hibernate Validator 4.0 integration – all embeddable on Tomcat 5.5+ / J2EE 1.4+ β€’ Spring 3.x: support for Java EE 6 platforms – Servlet 3.0 (waiting for GlassFish 3 and Tomcat 7) – JSR-236 "Concurrency Utilities for Java EE" Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 28
  • 29. Spring 3.0 Platform Support β€’ Requires Java 5 or above – Java 6 automatically detected & supported β€’ Web container: Servlet 2.4 or above – e.g. Tomcat 5.5 & 6.0 β€’ Java EE level: J2EE 1.4 or above – e.g. WebSphere 6.1 & 7.0 β€’ Fully OSGi compatible out of the box – featured in dm Server 2.0 β€’ Also compatible with Google App Engine – and other 'special' hosting environments Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 29
  • 30. Pruning & Deprecation in 3.0 β€’ Some pruning: removal of outdated features – Commons Attributes support β€’ superseded by Java 5 annotations – traditional TopLink API support β€’ in favor of JPA (EclipseLink) – subclass-style Struts 1.x support β€’ Some deprecation: superseded features – traditional MVC form controller hierarchy β€’ superseded by annotated controller style – traditional JUnit 3.8 test class hierarchy β€’ superseded by test context framework – several outdated helper classes Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 30
  • 31. Spring 2.5 Mission Continued β€’ Spring 3 continues Spring 2.5's mission – fully embracing Java 5 in the core Spring programming and configuration model – now with even the core framework requiring Java 5 β€’ all framework classes using Java 5 language syntax β€’ Backwards compatibility with Spring 2.5 – 100% compatibility of programming model – 95% compatibility of extension points – all previously deprecated API to be removed β€’ Make sure you're not using outdated Spring 1.2 / 2.0 API anymore! Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 31
  • 32. Spring 3.0 Summary β€’ Spring 3.0 embraces REST and EL – full-scale REST support – broad Unified EL++ support in the core β€’ Spring 3.0 significantly extends and refines annotated web controllers – RESTful URI mappings – annotation-based model validation β€’ Spring 3.0 remains backwards compatible with Spring 2.5 on Java 5+ – enabling a smooth migration path Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 32
  • 33. Spring 3.0 Roadmap β€’ Spring Framework 3.0 M3 to be released any day now – last milestone before RC1 β€’ Spring Framework 3.0 RC1 scheduled for late May 2009 – GA to follow soon after β€’ Spring Framework 3.1 expected in Q4 2009 – full compatibility with Java EE 6 platforms – first-class support for conversation management Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 33
  • 34. Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 34