`
yangjizhong24
  • 浏览: 399073 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

RESTful Web Services in Spring 3(下)

阅读更多

上一篇我主要发了RESTful Web Services in Spring 3的服务端代码,这里我准备写客户端的代码。

 

上篇得连接地址为:http://yangjizhong.iteye.com/blog/600540

 

 

开始本篇了:

 

注:附件里有源码,下载即可,依赖包请在spring网获得,谢谢。

 

applicationContext.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:p="http://www.springframework.org/schema/p"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:oxm="http://www.springframework.org/schema/oxm"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 
			http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd 
			http://www.springframework.org/schema/oxm http://www.springframework.org/schema/oxm/spring-oxm-3.0.xsd">

	<context:component-scan base-package="com.informit.articleservice" />

	<bean id="restTemplate" class="org.springframework.web.client.RestTemplate">
		<property name="messageConverters">
			<list>
				<!-- We only have one message converter for the RestTemplate, namely the XStream Marshller -->
				<bean class="org.springframework.http.converter.xml.MarshallingHttpMessageConverter">
					<constructor-arg>
						<bean class="org.springframework.oxm.xstream.XStreamMarshaller">
							
							<!-- Tell XStream to find the alias names in the following classes -->
							<property name="annotatedClasses">
								<list>
									<value>com.informit.articleservice.model.Article</value>							
									<value>com.informit.articleservice.model.Category</value>							
								</list>						
							</property>
						</bean>
					</constructor-arg>
				</bean>
			</list>
		</property>
	</bean>

</beans>

 

 

applicationContext.xml声明了一个bean,名restTemplate,implemented by org.springframework.web.client.RestTemplate,RestTemplate 类提供了一个setter来声明message converters,在这个属性我们提供一个包含一个简单bean的list:a MarshallingHttpMessageConverter,这是你的实体信息声明的地方

 

restTemplate bean声明后,ArticleClient 使用了restTemplate来调取ArticleService:

 

package com.informit.articleservice.client;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;

import com.informit.articleservice.model.Article;
import com.informit.articleservice.model.Category;

@Component("articleClient")
public class ArticleClient {

	@Autowired
	protected RestTemplate restTemplate;

	private final static String articleServiceUrl = "http://localhost:8082/articleservice/";

	@SuppressWarnings("unchecked")
	public List<Category> getCategories() {
		return restTemplate.getForObject(articleServiceUrl + "article", List.class);
	}

	public Article getArticle(String category, int id) {
		return restTemplate.getForObject(articleServiceUrl + "article/{category}/{id}", Article.class, category, id);
	}

	@SuppressWarnings("unchecked")
	public void delCategories() {
		restTemplate.delete(articleServiceUrl + "article");
	}

	@SuppressWarnings("unchecked")
	public List<Category> postCategories() {
		Map<String, String> params = new HashMap<String, String>();
		params.put("name", "jizhong");
		return restTemplate.postForObject(articleServiceUrl + "addarticle/{name}", null, List.class, params);

	}

}

 

 

在这里RestTemplate是自动加载的(auto-wired),你会注意到ArticleClient被加上了@Component annotation而且applicationContext.xml自动扫描com.informit.articleservice包或他的子包,因此当ArticleClient通过application context被loaded时,他会自动作为一个接口来实现RestTemplate实例

 

RestTemplate的相关使用的方法在文档中是这样写的:

 

delete(): deletes an object hosted by the web service
getForObject(): executes the HTTP GET command and returns the requested object
headForHeaders(): executes the HTTP HEAD command and returns the headers for the requested service
optionsForAllow(): executes the HTTP OPTIONS command and returns list of content types the the request service allows
postForLocation: executes the HTTP POST command and returns the location header value
postForObject(): executes the HTTP POST command and returns the object at the specified URL
put(): executes the HTTP PUT command and sends the specified object to the web service
execute(): provides fine grained control if one of the aforementioned methods does not suit your needs

 

接下来列出测试类:

 

package com.informit.resttemplateexample;

import java.util.List;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.informit.articleservice.client.ArticleClient;
import com.informit.articleservice.model.Category;

public class RestTemplateExample {
	public static void main(String[] args) {
		ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
		ArticleClient articleClient = applicationContext.getBean("articleClient", ArticleClient.class);

		//get operate
		//		Article article = articleClient.getArticle("fun", 1);
		//		System.out.println("Article: " + article.getBody());
		//
		//		List<Category> categories = articleClient.getCategories();
		//		for (Category category : categories) {
		//			System.out.println("Category: " + category);
		//		}

		//delete operate
		//articleClient.delCategories();

		//post operate
		List<Category> categories = articleClient.postCategories();

	}
}

 

 

 

好了,然后本地跑一下就可以了,当然前提是一定把服务端跑起来哦....

 

注:详细代码在附件,JAR包还是自己下哈,终于写完了,有点累,但是有收获。

 

 

分享到:
评论
2 楼 azxaqwaa 2014-02-11  
不错。
1 楼 eric851018 2013-05-21  
写的非常棒

相关推荐

    building restful web services with spring 5 2e

    Building RESTful Web Services with Spring 5 – Second Edition: Leverage the power of Spring 5.0, Java SE 9, and Spring Boot 2.0 Find out how to implement the REST architecture to build resilient ...

    Building RESTful Web Services with Spring 5(2nd) epub

    Building RESTful Web Services with Spring 5(2nd) 英文epub 第2版 本资源转载自网络,如有侵权,请联系上传者或csdn删除查看此书详细信息请在美国亚马逊官网搜索此书

    RESTful Java Web Services

    ### RESTful Java Web Services #### 一、RESTful Web服务概览 REST(Representational State Transfer)是一种软件架构风格,最初由Roy Fielding在他的博士论文中提出。它定义了一种简单且灵活的方法来创建分布式...

    Building RESTful Web Services with Go

    Building RESTful Web Services with Go:Initially, SOAP-based web services became more popular with XML. Then, since 2012,REST picked up the pace and gulped SOAP in whole. The rise of a new generation ...

    使用-Spring-3-来创建-RESTful-Web-Services

    使用 Spring 3 创建 RESTful Web Services RESTful Web Services 是一种基于 HTTP 和 REST 原理实现的 Web Service。使用 Spring 3,可以轻松地创建 Java 实现的服务器端 RESTful Web Services。本文将介绍使用 ...

    使用 Spring 3 来创建 RESTful Web Services

    **Spring 3 创建 RESTful Web Services 知识点详解** RESTful Web Services 是一种基于 Representational State Transfer(表述性状态转移)架构风格的 Web 应用设计模式,它强调资源的表述和状态转换,常用于构建...

    三步轻松实现java restful web services

    Java RESTful Web Services是开发现代Web应用程序的一种常见方式,它基于Representational State Transfer(REST)架构原则,提供了轻量级、高效且易于使用的接口。在本文中,我们将深入探讨如何分三步轻松实现Java ...

    RESTful Java Web Services (2009).pdf

    ### RESTful Java Web Services知识点概览 #### 一、RESTful架构原理与概念 - **REST(Representational State Transfer)**:一种网络应用程序的设计风格和开发方式,基于约束条件和原则,利用HTTP协议来实现...

    RESTFul+Maven+Spring 进行WebServices开发

    结合RESTful、Maven和Spring,我们可以快速地搭建和维护高质量的Web Services。RESTful提供了清晰的接口设计,Maven简化了项目管理和构建流程,而Spring框架则提供了强大的后端功能支持。在实际开发中,还需要考虑...

    Getting started with Spring Framework: covers Spring 5(epub)

    Stream API- Reactive programming using RxJava 2 and Reactor- Spring WebFlux- Reactive support in Spring Data MongoDB and Spring Security- Developing reactive RESTful web services using Spring WebFlux...

    Spring Web Services 2 Cookbook

    7. **Spring与RESTful服务**:虽然Spring Web Services主要关注SOAP,但书中可能也会涉及如何将Spring与其他组件结合,以支持RESTful风格的Web服务。 8. **实例分析与最佳实践**:书中的每个章节都会配合具体的代码...

    Java RESTful Web Service实战.pdf

    在Java中,我们常用JAX-RS(Java API for RESTful Web Services)来实现RESTful服务。JAX-RS为创建RESTful服务提供了便利的API,例如使用`@Path`注解定义资源路径,`@GET`、`@POST`等注解指定HTTP方法,以及`@...

    Spring web services 2 cookbook

    2. REST和SOAP服务:Spring Web Services支持构建RESTful Web服务,同时也支持SOAP Web服务。读者将学习如何根据需要选择合适的通信协议,并实施相应的服务。 3. 安全性:在Web服务中,安全性是一个重要的方面。...

    Spring集成Cxf暴露WebServices示例

    Cxf,另一方面,是一个开源的Web服务框架,它支持WS-*标准,可以创建和消费SOAP以及RESTful Web服务。 集成Spring和Cxf的步骤通常包括以下几个关键部分: 1. **配置Spring**:首先,我们需要创建一个Spring配置...

    Web Services平台架构

    Java通过JAX-RS(Java API for RESTful Web Services)提供对RESTful服务的支持,使得开发者可以轻松创建和消费RESTful服务。 总的来说,Web Services平台架构在Java中的实现涉及多个层面:定义服务接口(WSDL)、...

    Restful WebService + Spring

    在IT行业中,RESTful Web Service和Spring框架的集成是一个广泛使用的解决方案,特别是在构建现代、可扩展的分布式系统中。REST(Representational State Transfer)是一种网络应用程序的设计风格和开发方式,基于...

    spring加载restful(文档+程序源码)

     Spring是一个得到广泛应用的Java EE框架,它在版本3以后就增加了RESTful Web Services开发的支持。虽然,对REST的支持并不是JAX-RS的一种实现,但是它具有比标准定义更多的特性。REST支持被无缝整合到Spring的MVC...

Global site tag (gtag.js) - Google Analytics