Spring Hot(2)Jersey Integration Service
Actually jersey is the implementation of standard API jsr311.
Here is the dependency needed to run all the REST related things. The function jsr311 provide us is the HTTP method mapping, JSONMessagerConverter, and all these things are based on Spring Framework.
<dependency org="commons-logging"name="commons-logging"rev="1.1.1"/>
<dependency org="commons-httpclient"name="commons-httpclient"rev="3.1"/><dependency org="commons-codec"name="commons-codec"rev="1.4"/>
<dependency org="commons-pool"name="commons-pool"rev="1.5"/>
<dependency org="commons-configuration"name="commons-configuration"rev="1.5"/><dependency org="commons-lang"name="commons-lang"rev="2.4"/>
<dependency org="commons-collections"name="commons-collections"rev="3.2"/><dependency org="commons-beanutils"name="commons-beanutils"rev="1.8.3"/>
<!-- spring jar -->
<dependency org="org/springframework"name="spring-context"rev="3.1.2.RELEASE"/><dependency org="org/springframework"name="spring-web" rev="3.1.2.RELEASE"/><dependency org="org/springframework"name="spring-webmvc"rev="3.1.2.RELEASE"/><dependency org="org/springframework"name="spring-beans"rev="3.1.2.RELEASE"/><dependency org="org/springframework"name="spring-core"rev="3.1.2.RELEASE"/><dependency org="org/springframework"name="spring-asm"rev="3.1.2.RELEASE"/><dependency org="org/springframework"name="spring-expression"rev="3.1.2.RELEASE"/><dependency org="org/springframework"name="spring-aop"rev="3.1.2.RELEASE"/>
<!-- jersey -->
<dependency org="com/sun/jersey" name="jersey-server"rev="1.18"/><dependency org="com/sun/jersey" name="jersey-servlet"rev="1.18"/><dependency org="com/sun/jersey/contribs"name="jersey-multipart"rev="1.18"/><dependency org="com/sun/jersey" name="jersey-json" rev="1.18"/><dependency org="com/sun/jersey"name="jersey-client"rev="1.18"/><dependency org="com/sun/jersey/contribs"name="jersey-spring"rev="1.18"/><dependency org="com/sun/jersey"name="jersey-core"rev="1.18"/><dependency org="javax/ws/rs"name="jsr311-api"rev="1.1.1"/>
<!-- jackson -->
<dependency org="org/codehaus/jackson"name="jackson-core-lgpl"rev="1.9.10"/><dependency org="org/codehaus/jackson"name="jackson-mapper-lgpl"rev="1.9.10"/><dependency org="org/codehaus/jackson"name="jackson-jaxrs"rev="1.9.10"/><dependency org="org/codehaus/jackson"name="jackson-xc"rev="1.9.10"/>
<!-- other -->
<dependency org="log4j"name="log4j"rev="1.2.15"/>
<dependency org="asm"name="asm"rev="3.3"/>
And for the annotation of Object, there is one thing we need to pay attention to.
//XmlTransient means that we will ignore in generated XML
@XmlTransient
@JsonIgnore
public Long getId() {
returnid;
}
@XmlElement
@JsonProperty
public void setId(Long id) {
this.id = id;
}
We can configure ignore on the get Method, then these properties will not show in the JSON response. But we do need to parse these properties from request to our object, so we do need the @XmlElement, @JsonProperty on set Method.
Since we put a lot of annotation there in the Model, we need to scan them, here is the Spring Configuration does that.
<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.0.xsd">
<context:component-scan base-package="com.sillycat.easyspringrest"/></beans>
Here the Service Class, based on the document, it is quite easy. Jersey implementation handle the mapping, message Converter(JacksonMapping configured in Spring). The only thing we need to do is implement our logic. My demo only show one mock service to demo the REST service.
package com.sillycat.easyspringrest.service;
import java.util.ArrayList;
import java.util.List;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import org.apache.log4j.Logger;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import com.sillycat.easyspringrest.model.Product;
@Component
@Scope("prototype")
@Path("/product")
public class ProductJerseyService {
private static final Logger logger = Logger.getLogger(ProductJerseyService.class);
@GET
@Path("products")
@Produces(MediaType.APPLICATION_JSON)
public List<Product> listProducts(){
logger.debug("hitting the products REST API");
List<Product> items = new ArrayList<Product>();
Product item1 = new Product();
item1.setDesn("desn1");
item1.setId(Long.valueOf(1));
item1.setProductLink("http://github.com/luohuazju");
item1.setProductName("My Github Linke");
Product item2 = new Product();
item2.setDesn("desn2");
item2.setId(Long.valueOf(2));
item2.setProductLink("http://sillycat.iteye.com");
item2.setProductName("My Technical Blog");
items.add(item1);
items.add(item2);
return items;
}
@GET
@Path("products/{id}")
@Produces(MediaType.APPLICATION_JSON)
public Product getProduct(@PathParam("id") Long id){
logger.debug("hitting the get product REST API with id = " + id);
Product item1 = new Product();
item1.setDesn("desn1");
item1.setId(Long.valueOf(1));
item1.setProductLink("http://github.com/luohuazju");
item1.setProductName("My Github Linke");
return item1;
}
@POST
@Path("products")
@Produces(MediaType.APPLICATION_JSON)
public Product saveProduct(Product item){
logger.debug("hitting the save product REST API");
logger.debug("id=" + item.getId());
logger.debug("desn=" + item.getDesn());
logger.debug("link=" + item.getProductLink());
logger.debug("name=" + item.getProductName());
return item;
}
}
All these demo are in project easyspringrest.
References:
http://sillycat.iteye.com/admin/blogs/2067537
相关推荐
2. **配置Spring**:创建`applicationContext.xml`文件,定义Spring的bean,包括你的REST服务类。例如,你可以创建一个名为`MyResource`的资源类,并在XML中声明它: ```xml ``` 3. **配置Jersey**:在`web.xml...
Spring Integration + Spring WS 整合 在 Java 领域中,Spring Integration 和 Spring WS 是两个常用的框架,它们分别负责集成系统和 Web 服务。今天,我们将探讨如何将这两个框架整合在一起,实现一个完整的 Web ...
关于Spring,也是我们常用的IOC在java下一种实现了,不过相对.net下IOC的实现,Spring相对更强大(反正之前在.Net下,我是习惯了啥都去配置,在Java下才知道有一种Scan模式,本Demo中也用到了,不知道的可以查查...
### Spring Integration in Action #### Part 1 - 背景 **1: Spring Integration 的介绍** - **Spring Integration 概览:** Spring Integration 是一个基于 Spring 框架的企业集成解决方案,它提供了一种声明式...
Spring Integration。 官网 Spring Integration API。 Spring Integration 开发文档。
通过这本书和随书源码的学习,你可以掌握如何利用Spring Integration实现系统间的无缝对接,将其作为轻量级的Enterprise Service Bus (ESB)使用,从而提高系统的集成效率和灵活性。无论是对于初学者还是有经验的...
### Spring Integration介绍 #### 一、Spring Integration概览 **Spring Integration** 是Spring框架的一个扩展项目,它提供了构建企业集成应用程序所需的各种功能和支持。通过利用现有的Spring编程模型和依赖注入...
配置文件如applicationContext.xml定义了Spring的bean,实体类对应数据库中的表,DAO层通过Hibernate4与数据库交互,Service层封装业务逻辑,Controller层则接收并处理来自Jersey的请求,返回JSON响应。 总的来说,...
Spring 2.5 和 Struts 2.0 集成是 Java Web 开发中一个常见的技术组合,它结合了 Spring 框架的强大功能和 Struts 2 框架的优秀表现力,为开发者提供了高效且灵活的 MVC 应用程序构建平台。这个集成允许开发者利用 ...
2. **web.xml** - Web应用的部署描述符,配置了Jersey的Servlet和Spring的DispatcherServlet。 3. **ApplicationConfig.java** - 可能是Jersey的应用配置类,用于注册资源类和服务提供者。 4. **Resource Classes** ...
标题 "Spring3.2.5Hibernate4.0.1Integration 完整範例" 指的是将 Spring 3.2.5 版本与 Hibernate 4.0.1 版本整合的一个实例项目。这个项目可能是为了演示如何在实际应用中有效地结合这两个框架,以便于更高效地管理...
在本文中,我们将深入探讨如何将Spring 4.x框架与Jersey 2.x结合,以构建一个能够对外提供RESTful接口服务的系统。这个过程包括了配置、组件整合以及实际的API开发。以下是对整个集成过程的详细说明。 首先,让我们...
2. **Spring框架**: Spring是一个全面的Java企业级应用开发框架,提供依赖注入、AOP(面向切面编程)、事务管理等功能。在文件上传中,Spring可以用于管理服务组件,例如数据存储和业务逻辑。 3. **Spring MVC**: ...
2. **Spring与BlazeDS集成**:Spring BlazeDS Integration是Spring框架的一部分,它提供了一套完整的工具集,包括Spring配置、Spring MVC适配器和数据传输对象(DTO),以简化BlazeDS与Spring应用的集成。...
然而,无论采用哪种方式,集成 Spring 和 Jersey 都可以有效地解决 Jersey 单例带来的线程安全问题,确保服务的线程安全性,提升系统的稳定性和可靠性。同时,Spring 还提供了其他优势,比如依赖注入、AOP(面向切面...
com.sun.jersey.spi.spring.container.servlet.SpringServlet需要此包的支持,使用spring3.1.1开发web service project时,用于添加Spring框架支持,使用IOC容器接管所有对象实例。解决在web service project中使用...
4. **错误的注解使用**:确保在需要注入的对象上使用了正确的注解,如`@Component`、`@Service`、`@Repository`或`@Controller`,并在Spring配置中启用组件扫描。 ```xml ``` 5. **类型安全的依赖注入**:如果...
本文是一篇关于Spring Integration框架的介绍与分析,该框架是SpringSource公司的产品,旨在帮助企业应用间的集成。文章深入探讨了企业应用集成(EAI)的定义、消息传递的概念以及Spring Integration框架的基本概念...