spring framework 3.0, the next generation
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