抱歉这个直率的问题。但是很多人每天都使用这两个词,但我不知道。我对此进行了一些研究,知道它们分别是什么。但是不知道它是如何联系的。首先,我将分享我对这两个方面的了解。
JAXB是XML到Java的绑定技术,可实现转换在模式和Java对象之间以及在XML实例文档之间和Java对象实例。 JAXB内部完成所有这些转换在xml和java之间。这是xml的解析器,然后知道了什么xml中的组件与java中的组件相对应,并且会中断。JAXB对此答案的转换是通过xjc(或codgen插件)。映射可能像
xsd:string java.lang.String
xsd:integer java.math.BigInteger
JaxRs不同。这是一套处理规范要求 。意思是说“ GET(” / foo“)”意味着处理一个get用url / foo调用。它只说。怎么做的?对,就那个被称为此规范的实现。有数量诸如restlet,resteasy,jersey,apache cxf等的实现。这与逻辑和数学实现方式类似。的算法思想是桶搜索。这可以以任何方式实现。用Java术语JaxRs是接口,这4个restlet,resteasy,jersey,apache cxf是该接口的实现。
现在请说出我的理解是否正确。然后说出它们之间的关系。请帮忙 。如果可能的话,使用图片说明会更有帮助。
您的理解基本上是正确的。 JAXB和JAX-RS都是具有多个实现的Java社区过程(JCP)标准。
JAXB-定义标准化的元数据和运行时API,用于将Java域对象转换为XML。
JAX-RS
-定义标准化的元数据和运行时API,以创建RESTful服务。默认情况下,对于application/xml
媒体类型,JAX-RS将使用JAXB将对象与XML相互转换。示例
在下面的示例中,当执行GET
操作时,JAX-RS实现将返回Customer
。 JAXB实现将用于将Customer
的实例转换为客户端将实际接收的XML。
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
@Path("/customers")
public class CustomerResource {
@GET
@Produces(MediaType.APPLICATION_XML)
@Path("{id}")
public Customer read(@PathParam("id") int id) {
Customer customer = new Customer();
customer.setId(id);
customer.setFirstName("Jane");
customer.setLastName(null);
PhoneNumber pn = new PhoneNumber();
pn.setType("work");
pn.setValue("5551111");
customer.getPhoneNumbers().add(pn);
return customer;
}
}