Professional Documents
Culture Documents
0
The Next Generation
Jürgen Höller
VP & Distinguished Engineer
SpringSource
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
Agenda
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 2
Spring Framework 2.5
Copyright 2008 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 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 4
Annotated DAO with Lifecycle
@Repository
public class JdbcAccountRepository implements AccountRepository {
@Autowired
public JdbcAccountRepository(DataSource ds) { … }
@PostConstruct
public initCache() { … }
@PreDestroy
public cleanupCache() { … }
}
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 5
Minimal XML Bean Definitions
<context:annotation-config/>
<bean class=”com.myapp.rewards.RewardNetworkService”/>
<bean class=”com.myapp.rewards.JdbcAccountRepository”/>
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 6
Minimal XML Bootstrapping
<context:component-scan
base-package=”com.myapp.rewards”/>
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 7
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 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 8
Spring Servlet MVC 2.5
@Controller
public class MyController {
@Autowired
public MyController(MyService myService) {
this.myService = myService;
}
@RequestMapping("/removeBook")
public String removeBook(
@RequestParam("book") String bookId) {
myService.deleteBook(bookId);
return "redirect:myBooks";
}
}
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 9
Spring Portlet MVC 2.5
@Controller
@RequestMapping("EDIT")
public class MyPortletController {
@Autowired
public MyPortletController(MyService myService) {
this.myService = myService;
}
@RequestMapping(params = "action=delete")
public void removeBook(@RequestParam("book") String bookId,
ActionResponse response) {
myService.deleteBook(bookId);
response.setRenderParameter("action", "list");
}
}
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 10
Spring 3.0 Themes
• Java 5+ foundation
– compatible with J2EE 1.4 and Java EE 5
• 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
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 11
EL in Bean Definitions
<bean class="mycompany.RewardsTestDatabase">
<property name="databaseName"
value="“#{systemProperties.databaseName}”/>
<property name="keyGenerator"
value="“#{strategyBean.databaseKeyGenerator}”/>
</bean>
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 12
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 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 13
Conversation Management
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 14
REST Support
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 15
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
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 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 17
Model Validation
In view:
<form:input path="transactionDate">
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 18
Portlet 2.0 Support
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 19
Spring 2.5 Mission Continued
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 20
Spring 3.0 Summary
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 21
Spring 3.0 Roadmap
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 22
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 23