Spring Hot(1)Jersey Integration
1. Marshal and UnMarshal the Object to XML
The object with annotation
package com.sillycat.easyspringrest.model;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;
@XmlRootElement@XmlAccessorType(XmlAccessType.PUBLIC_MEMBER)
public class Product {
private Long id;
private String productName;
private String productLink;
private String desn;
//XmlTransient means that we will ignore in generated XML
@XmlTransient
public Long getId() {
returnid;
}
publicvoid setId(Long id) {
this.id = id;
}
@XmlElement(name="name")
public String getProductName() {
return productName;
}
public void setProductName(String productName) {
this.productName = productName;
}
public String getProductLink() {
return productLink;
}
public void setProductLink(String productLink) {
this.productLink = productLink;
}
public String getDesn() {
return desn;
}
public void setDesn(String desn) {
this.desn = desn;
}
@Override
public String toString() {
return"Product [id=" + id + ", productName=" + productName + ", productLink=" + productLink + ", desn=" + desn + "]";
}
}
The main Application to Marshal and Unmarshal the Object
package com.sillycat.easyspringrest.model;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
public class ProductJabxMain {
public static void main(String[] args) {
Product item1 = new Product();
item1.setDesn("desn");
item1.setId(Long.valueOf(1));
item1.setProductLink("http://github.com/luohuazju");
item1.setProductName("Product Name");
try {
File file = new File("/tmp/product.xml");
JAXBContext jaxbContext = JAXBContext.newInstance(Product.class);
Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
// output pretty printed
jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
jaxbMarshaller.marshal(item1, file);
} catch (JAXBException e) {
e.printStackTrace();
}
JAXBContext jaxbContext = null;
Product item2 = null;
FileReader fileReader = null;
try {
fileReader = new FileReader("/tmp/product.xml");
jaxbContext = JAXBContext.newInstance(Product.class);
item2 = (Product) jaxbContext.createUnmarshaller().unmarshal(
fileReader);
System.out.println("Item:" + item2);
} catch (JAXBException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
2. Marshal and Unmarshal via Jackson
Dependency
<dependencyorg="org/codehaus/jackson"name="jackson-core-lgpl"rev="1.9.10"/><dependencyorg="org/codehaus/jackson"name="jackson-mapper-lgpl"rev="1.9.10"/>
Some new annotation
//XmlTransient means that we will ignore in generated XML@XmlTransient@JsonIgnore
@XmlElement(name="name")
@JsonProperty("name")
public String getProductName() {
return productName;
}
The Main Application to Test the Annotation
package com.sillycat.easyspringrest.model;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.map.SerializationConfig;
public class ProductJSONMain {
public static void main(String[] args) throws JsonGenerationException, JsonMappingException, IOException {
//create ObjectMapper instance
ObjectMapper objectMapper = new ObjectMapper(); objectMapper.enable(SerializationConfig.Feature.INDENT_OUTPUT);
//convert Object to json string
Product item1 = new Product();
item1.setDesn("desn");
item1.setId(Long.valueOf(1));
item1.setProductLink("http://github.com/luohuazju");
item1.setProductName("Product Name"); //write to file
File file = new File("/tmp/product.json");
objectMapper.writeValue(file, item1); //read json file data to String
byte[] jsonData = Files.readAllBytes(Paths.get("/tmp/product.json"));
//convert json string to object
Product item = objectMapper.readValue(jsonData, Product.class); System.out.println("Product Object\n" + item);
}
}
References:
https://www.ibm.com/developerworks/cn/web/wa-aj-tomcat/
http://www.pigg.co/jersey-spring-rest.html
http://xosadan.iteye.com/blog/1119235
official website
https://jersey.java.net/
https://jersey.java.net/documentation/latest/getting-started.html
Spring MVC Controller REST and Groovy Controller REST
http://sillycat.iteye.com/blog/897285
http://sillycat.iteye.com/blog/897286
http://sillycat.iteye.com/blog/897588
http://sillycat.iteye.com/blog/1477354
http://sillycat.iteye.com/blog/1477387
http://sillycat.iteye.com/blog/1477464
Java XML JSON
http://sillycat.iteye.com/blog/805303 Java Object vs XML
http://docs.oracle.com/javase/tutorial/jaxb/intro/ jaxb doc
https://github.com/FasterXML/jackson-annotations Java Object vs JSON
http://www.journaldev.com/2324/jackson-json-processing-api-in-java-example-tutorial Jackson Example
相关推荐
在本文中,我们将深入探讨如何将Spring4框架与Jersey2.9进行集成,以便创建一个功能丰富的RESTful Web服务。这个入门案例采用Maven作为项目构建工具,使得整个过程更加简便。 首先,理解Spring4和Jersey2.9的核心...
Spring Integration + Spring WS 整合 在 Java 领域中,Spring Integration 和 Spring WS 是两个常用的框架,它们分别负责集成系统和 Web 服务。今天,我们将探讨如何将这两个框架整合在一起,实现一个完整的 Web ...
关于Spring,也是我们常用的IOC在java下一种实现了,不过相对.net下IOC的实现,Spring相对更强大(反正之前在.Net下,我是习惯了啥都去配置,在Java下才知道有一种Scan模式,本Demo中也用到了,不知道的可以查查...
**1: Spring Integration 的介绍** - **Spring Integration 概览:** Spring Integration 是一个基于 Spring 框架的企业集成解决方案,它提供了一种声明式的、面向消息的方式来构建集成应用程序。 - **组件介绍:**...
Spring Integration。 官网 Spring Integration API。 Spring Integration 开发文档。
1. **通道**:Spring Integration中的通道是消息传递的基础设施,它们定义了消息流动的路径。你可以将通道视为一种数据的容器,消息在通道之间流动,通过过滤器、路由器等组件进行处理。 2. **消息**:消息是Spring...
### Spring Integration介绍 #### 一、Spring Integration概览 **Spring Integration** 是Spring框架的一个扩展项目,它提供了构建企业集成应用程序所需的各种功能和支持。通过利用现有的Spring编程模型和依赖注入...
1. **Spring-Struts 2 整合框架**: 通过 Spring 的 DispatcherServlet 与 Struts 2 的 FilterDispatcher 协同工作,实现请求的调度。 2. **Action 实例化**: 使用 Spring 来管理 Struts 2 的 Action 对象,通过 DI ...
**Spring BlazeDS Integration 1.0.0** 是一个关键的框架,它为Spring应用程序与Adobe Flex客户端之间的通信提供了一种高效且灵活的解决方案。这个版本的发布标志着开发者可以更轻松地利用Flex的富互联网应用(RIA)...
《Spring4 Hibernate4 Jersey项目源码解析》 在IT领域,Spring、Hibernate和Jersey是三个备受推崇的开源框架,它们分别在应用层管理、持久层操作和RESTful服务提供方面展现出强大的功能。本篇文章将深入探讨一个...
然而,无论采用哪种方式,集成 Spring 和 Jersey 都可以有效地解决 Jersey 单例带来的线程安全问题,确保服务的线程安全性,提升系统的稳定性和可靠性。同时,Spring 还提供了其他优势,比如依赖注入、AOP(面向切面...
1. **配置文件**:如 `spring-context.xml` 和 `hibernate.cfg.xml`,分别定义 Spring 的bean配置和 Hibernate 的数据库连接信息。 2. **实体类**:对应数据库表的 Java 类,使用 Hibernate 的注解或 XML 配置进行...
1. **Jersey**: Jersey是一个基于JAX-RS规范的实现,它允许开发者创建RESTful服务。在文件上传场景中,Jersey可以用来创建一个HTTP POST接口,接收客户端发送的文件。 2. **Spring框架**: Spring是一个全面的Java...
1. **pom.xml** - Maven配置文件,定义了项目依赖,包括Jersey和Spring的相关库。 2. **web.xml** - Web应用的部署描述符,配置了Jersey的Servlet和Spring的DispatcherServlet。 3. **ApplicationConfig.java** - ...
本文是一篇关于Spring Integration框架的介绍与分析,该框架是SpringSource公司的产品,旨在帮助企业应用间的集成。文章深入探讨了企业应用集成(EAI)的定义、消息传递的概念以及Spring Integration框架的基本概念...
spring-jersey-integration-example 将 Spring 与 Jersey 集成的示例。 还解释了如何以 2 种不同的格式(XML / JSON)提供相同的数据。 内容类型是根据“接受”标头确定的。 'text/xml' => XML 'application/...
《Spring Integration 2.0.3:源码与实践解析》 Spring Integration 是 Spring 框架的一个扩展,旨在提供轻量级、企业级的集成解决方案,它简化了应用程序之间的数据传输,支持多种协议和消息传递模式。在本文中,...
1. **通道(Channels)**:在 Spring Integration 中,通道是数据传输的载体,相当于消息的高速公路。消息通过发送到通道,然后被通道上的处理器或适配器处理。 2. **消息(Message)**:Spring Integration 中的消息...