最近在Spring官网上发现,Spring 2.5发布不久,Spring3.0项目已经是开始进行了。 包括很多新功能,如标题中提到的Restful的支持,还有Servlet3.0的支持等。 大概总结了一下,Spring3.0中会包括以下一些新特性: 1. Full scale REST support by means of additions to the Spring MVC API - already pretty detailed, and apparently going to be included in the first milestone release 2. Support for Unified EL (as seen in Spring Web Flow) - very likely part of 3.0, but no details given 3. Annotation support for declaring factory methods - as above 4 .Support for Portlet 2.0 (JSR 286), including resource requests (ResourceServingPortlet) - as above 5. "Preparations" for Servlet 3.0 specification - sounded a lot like architectural preparations not visible to the "consumer" 6. Something to fill the gap between Spring Web Flow and Spring MVC - that sounded very vague 7. Inclusion (probably generalisation) of the repeat, retry and resume semantics provided by Spring Batch - was only hinted at, no details given 8. Inclusion of the OXM support provided by Spring WS - sounded pretty definitive, but no details given 9. Some kind of site definition language for the web stack - no idea whether this is more than a rumour 10. Model-based validation for use both in server and client - as above 下面我们具体介绍一下Restful该特性。 刚才我也提到了,Spring3.0是基于其目前提供的Spring MVC框架上引入对Rest的支持,这样使其可以很好的融合到Spring中。 下面有一段代码,大家看了会更有体会。 先看一下如何发布Rest风格的服务接口1 @RequestMapping(value = "/gadgets/{id}",2 method = RequestMethod.GET)3 public View getGadget(@PathParam String id) {4 // 功能是根据 id 查询 Gadget对象5 // 返回View对象6 }7 看到使用Annotation方式,代码非常简洁。@RequestMapping是对访求的资源进行服务的绑定, value指定服务的资源路径, method是指Rest风格中的CRUD的方法。 @PathParam是对资源路么参数的解析,它会自动根据提交的数据格式,解析参数值。 下面来看一下RestTemplate,对Rest服务接口的调用。 1 // 使用getForObject执行查询操作 2 // (指定参数提交方式) 3 RestTemplate template = new RestTemplate(); 4 Gadget gadget = template.getForObject( 5 "http://www.springify.com/gadgets/{id}", 6 Gadget.class, 1); 7 8 // 使用postForLocation 执行新增操作 9 // (指定参数提交方式,使用Map对象)10 Map<String, String> params =11 new HashMap<String, String>();12 params.put("id", 42);13 URI uri = template.postForLocation(14 "http://www.springify.com/gadgets/{id}/features",15 new Feature("Glows in the dark."), params);16 17 // 删除操作的演示18 template.delete(19 "http://www.springify.com/gadgets/{id}", someId);20 2129 总结:可以看到使用Rest风格的服务发布,可以对服务资源进行统一的管理,使用发布的接口更清晰。 当然在Spring 3.0 发布之前,上述的API,annotation可能会有变动,我们也期待Spring能与我们早日见面。 最后,由于本人对Rest技术了解还不是太深入,也希望大家能多提些意见和建议。 这是网上一朋友说的,3.0都出来了,要学习了
包括很多新功能,如标题中提到的Restful的支持,还有Servlet3.0的支持等。
大概总结了一下,Spring3.0中会包括以下一些新特性:
1. Full scale REST support by means of additions to the Spring MVC API - already pretty detailed, and apparently going to be included in the first milestone release
2. Support for Unified EL (as seen in Spring Web Flow) - very likely part of 3.0, but no details given
3. Annotation support for declaring factory methods - as above
4 .Support for Portlet 2.0 (JSR 286), including resource requests (ResourceServingPortlet) - as above
5. "Preparations" for Servlet 3.0 specification - sounded a lot like architectural preparations not visible to the "consumer"
6. Something to fill the gap between Spring Web Flow and Spring MVC - that sounded very vague
7. Inclusion (probably generalisation) of the repeat, retry and resume semantics provided by Spring Batch - was only hinted at, no details given
8. Inclusion of the OXM support provided by Spring WS - sounded pretty definitive, but no details given
9. Some kind of site definition language for the web stack - no idea whether this is more than a rumour
10. Model-based validation for use both in server and client - as above
下面我们具体介绍一下Restful该特性。
刚才我也提到了,Spring3.0是基于其目前提供的Spring MVC框架上引入对Rest的支持,这样使其可以很好的融合到Spring中。
下面有一段代码,大家看了会更有体会。
先看一下如何发布Rest风格的服务接口1 @RequestMapping(value = "/gadgets/{id}",2 method = RequestMethod.GET)3 public View getGadget(@PathParam String id) {4 // 功能是根据 id 查询 Gadget对象5 // 返回View对象6 }7
看到使用Annotation方式,代码非常简洁。@RequestMapping是对访求的资源进行服务的绑定, value指定服务的资源路径, method是指Rest风格中的CRUD的方法。
@PathParam是对资源路么参数的解析,它会自动根据提交的数据格式,解析参数值。
下面来看一下RestTemplate,对Rest服务接口的调用。 1 // 使用getForObject执行查询操作 2 // (指定参数提交方式) 3 RestTemplate template = new RestTemplate(); 4 Gadget gadget = template.getForObject( 5 "http://www.springify.com/gadgets/{id}", 6 Gadget.class, 1); 7 8 // 使用postForLocation 执行新增操作 9 // (指定参数提交方式,使用Map对象)10 Map<String, String> params =11 new HashMap<String, String>();12 params.put("id", 42);13 URI uri = template.postForLocation(14 "http://www.springify.com/gadgets/{id}/features",15 new Feature("Glows in the dark."), params);16 17 // 删除操作的演示18 template.delete(19 "http://www.springify.com/gadgets/{id}", someId);20 2129
总结:可以看到使用Rest风格的服务发布,可以对服务资源进行统一的管理,使用发布的接口更清晰。
当然在Spring 3.0 发布之前,上述的API,annotation可能会有变动,我们也期待Spring能与我们早日见面。
最后,由于本人对Rest技术了解还不是太深入,也希望大家能多提些意见和建议。
这是网上一朋友说的,3.0都出来了,要学习了
而REST主张每次链接包含所有的操作细节指示.RoR里部分吸收了这个概念.
对应于EJB的概念大概就是Stateless.