spring framework 3.0, the next generation

Upload: best-tech-videos

Post on 30-May-2018

229 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/14/2019 Spring Framework 3.0, The Next Generation

    1/23

  • 8/14/2019 Spring Framework 3.0, The Next Generation

    2/23

    Agenda

    Quick Review: Spring 2.5

    Spring 3.0 Themes and Features Spring 3.0 Roadmap

    Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 2

  • 8/14/2019 Spring Framework 3.0, The Next Generation

    3/23

    Spring Framework 2.5

    Comprehensive support for

    @Autowired (+ @Qualifier or custom qualifiers) @Transactional

    @Service, @Repository, @Controller

    Common Java EE 5 annotations supported too

    @PostConstruct, @PreDestroy

    Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 3

    ,

    @Resource, @EJB, @WebServiceRef

    @TransactionAttribute

  • 8/14/2019 Spring Framework 3.0, The Next Generation

    4/23

    Annotated Bean Component

    @Service

    public class RewardNetworkService

    implements RewardNetwork {

    @Autowiredpublic RewardNetworkService(AccountRepository ar) {

    }

    Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 4

    public RewardConfirmation rewardAccountFor(Dining d) {

    }}

  • 8/14/2019 Spring Framework 3.0, The Next Generation

    5/23

    Annotated DAO with Lifecycle

    @Repository

    public class JdbcAccountRepository implements AccountRepository {

    @Autowired

    public JdbcAccountRepository(DataSource ds) { }

    @PostConstruct

    public initCache() { }

    Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 5

    @PreDestroypublic cleanupCache() { }

    }

  • 8/14/2019 Spring Framework 3.0, The Next Generation

    6/23

  • 8/14/2019 Spring Framework 3.0, The Next Generation

    7/23

    Minimal XML Bootstrapping

    Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 7

  • 8/14/2019 Spring Framework 3.0, The Next Generation

    8/23

    Test Context Framework

    @RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration

    public class RewardSystemIntegrationTests {

    @Autowiredprivate RewardNetwork rewardNetwork;

    @Test@Transactional

    Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 8

    // test in transaction with auto-rollback}

    }

  • 8/14/2019 Spring Framework 3.0, The Next Generation

    9/23

    Spring Servlet MVC 2.5

    @Controller

    public class MyController {

    private final MyService myService;

    @Autowired

    public MyController(MyService myService) {

    this.myService = myService;

    }

    @RequestMapping("/removeBook")

    public String removeBook(

    Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 9

    @RequestParam("book") String bookId) {

    myService.deleteBook(bookId);

    return "redirect:myBooks";

    }

    }

  • 8/14/2019 Spring Framework 3.0, The Next Generation

    10/23

    Spring Portlet MVC 2.5

    @Controller

    @RequestMapping("EDIT")

    private final MyService myService;

    @Autowired

    public MyPortletController(MyService myService) {

    this.myService = myService;

    }

    @Re uestMa in ( arams = "action=delete")

    Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 10

    public void removeBook(@RequestParam("book") String bookId,ActionResponse response) {

    myService.deleteBook(bookId);

    response.setRenderParameter("action", "list");

    }

    }

  • 8/14/2019 Spring Framework 3.0, The Next Generation

    11/23

    Spring 3.0 Themes

    Java 5+ foundation

    . Spring Expression Language

    Unified EL++

    Comprehensive REST support and other Spring @MVC additions

    Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 11

    Hibernate Validator, JSR 303

    Support for Portlet 2.0

  • 8/14/2019 Spring Framework 3.0, The Next Generation

    12/23

    EL in Bean Definitions

    Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 12

  • 8/14/2019 Spring Framework 3.0, The Next Generation

    13/23

    EL in Component Annotations

    Re ositor

    public class RewardsTestDatabase {

    @Value(#{systemProperties.databaseName})

    public void setDatabaseName(String dbName) { }

    @Value(#{strategyBean.databaseKeyGenerator})

    Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 13

    }

  • 8/14/2019 Spring Framework 3.0, The Next Generation

    14/23

    Conversation Management

    Key problem: isolating concurrent

    w n ows n same rowser shared HTTP session

    several independent conversations going on

    Generalized: conversation scope withshorter lifetime than session

    Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 14

    scope= conversa on

    Spring Web Flow providing sophisticatedflow navigation management on top

  • 8/14/2019 Spring Framework 3.0, The Next Generation

    15/23

    REST Support

    Spring MVC to provide first-class support for-

    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

    Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 15

    - prov er e.g. ersey using the JAX-RS component model to build

    programmatic resource endpoints

  • 8/14/2019 Spring Framework 3.0, The Next Generation

    16/23

    REST in MVC - @UriVariable

    http://rewarddining.com/show/12345

    @RequestMapping(value = "/show/{id}", method = GET)

    public Reward show(@UriVariable("id") long id) {

    return this.rewardsAdminService.findReward(id);

    }

    Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 16

  • 8/14/2019 Spring Framework 3.0, The Next Generation

    17/23

    Different Representations

    JSON

    XML

    GET http://rewarddining.com/accounts/1 accepts application/jsonGET http://rewarddining.com/accounts/1.json

    GET http://rewarddining.com/accounts/1 accepts application/xmlGET http://rewarddining.com/accounts/1.xml

    Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 17

    ATOMGET http://rewarddining.com/accounts/1 accepts application/atom+xmlGET http://rewarddining.com/accounts/1.atom

  • 8/14/2019 Spring Framework 3.0, The Next Generation

    18/23

    Model Validation

    public class Reward {

    NotNull

    @ShortDateprivate Date transactionDate;

    }

    In view:

    Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 18

    Same metadata can be used for persisting, rendering, etc Hibernate Validator annotations supported

    JSR 303 (Bean Validation) to be supported as well

  • 8/14/2019 Spring Framework 3.0, The Next Generation

    19/23

    Portlet 2.0 Support

    Portlet 2.0: major new capabilities

    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

    Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 19

    @ActionMapping, @RenderMapping @ResourceMapping, @EventMapping

  • 8/14/2019 Spring Framework 3.0, The Next Generation

    20/23

  • 8/14/2019 Spring Framework 3.0, The Next Generation

    21/23

  • 8/14/2019 Spring Framework 3.0, The Next Generation

    22/23

    Spring 3.0 Roadmap

    Spring Framework 3.0 M1 to be released

    new project layout

    first cut of REST and EL support

    Spring Framework 3.0 RC1 scheduled forMarch 2009

    after two further milestones

    Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 22

    .

    April 2009 depending on RC feedback

  • 8/14/2019 Spring Framework 3.0, The Next Generation

    23/23

    Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 23