Lo nuevo en Spring 3.0

1,940 views
1,833 views

Published on

Una presentacion de Spring ONE de lo nuevo en Spring 3.0

Published in: Technology, Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,940
On SlideShare
0
From Embeds
0
Number of Embeds
22
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Lo nuevo en Spring 3.0

  1. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 34. Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 34

×