jersey的简单介绍及与spring-boot的集成使用

转载:http://blog.csdn.net/zhangjq520/article/details/54314256

一、什么是jersey?

Jersey RESTful 框架是开源的RESTful框架, 实现了JAX-RS (JSR 311 & JSR 339) 规范。

它扩展了JAX-RS 参考实现, 提供了更多的特性和工具, 可以进一步地简化 RESTful service 和 client 开发。与Struts类似,它同样可以和hibernate,

spring框架整合。

Jersey共计有4中处理方式,即:@GET,@POST,@DELETE,@PUT。由于Jersey中文资料较少。想学习的可以通过官网API学习。
jersey常用注解解释:

Annotation 作用 说明
@GET 查询请求 相当于数据库的查询数据操作
@POST 插入请求 相当于数据库的插入数据操作
@PUT 更新请求 相当于数据库的更新数据操作
@DELETE 删除请求 相当于数据的删除数据操作
@Path uri路径 定义资源的访问路径,client通过这个路径访问资源。比如:@Path(“user”)
@Produces 指定返回MIME格式 资源按照那种数据格式返回,可取的值有:MediaType.APPLICATION_XXX。比如:@Produces(MediaType.APPLICATION_XML)
@Consumes 接受指定的MIME格式 只有符合这个参数设置的请求再能访问到这个资源。比如@Consumes(“application/x-www-form-urlencoded”)
@PathParam uri路径参数 写在方法的参数中,获得请求路径参数。比如:@PathParam(“username”) String userName
@QueryParam uri路径请求参数 写在方法的参数中,获得请求路径附带的参数。比如:@QueryParam(“desc”) String desc
@DefaultValue 设置@QueryParam参数的默认值 如果@QueryParam没有接收到值,就使用默认值。比如:@DefaultValue(“description”) @QueryParam(“desc”) String desc
@FormParam form传递的参数 接受form传递过来的参数。比如:@FormParam(“name”) String userName
@BeanParam 通过Bena的形式传递参数 接受client传递的bean类型的参数,同时这个bean可以在属性上配置@FormParam用以解决client的属性名称和bean的属性名称不一致的问题。比如:@BeanParam User user
@Context 获得一些系统环境信息 通过@Context可以获得以下信息:UriInfo、ServletConfig、ServletContext、HttpServletRequest、HttpServletResponse和HttpHeaders等
@XmlRootElement 将bean转换为xml 如果要讲bean以xml或json的格式返回,必须要这个注解。比如:
@XmlRootElement
public class User{…}
@XmlElements    
@XmlElement  

二、与spring-boot的使用

pom.xml

[html] view plain copy
print ?
  1. <project xmlns=“http://maven.apache.org/POM/4.0.0” xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”  
  2.   xsi:schemaLocation=“http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd”>  
  3.   <modelVersion>4.0.0modelVersion>  
  4.   <groupId>spring-boot-JerseygroupId>  
  5.   <artifactId>spring-boot-JerseyartifactId>  
  6.   <packaging>warpackaging>  
  7.   <version>0.0.1-SNAPSHOTversion>  
  8.   <name>spring-boot-Jerseyname>  
  9.   <url>http://maven.apache.orgurl>  
  10.   <properties>  
  11.     <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>  
  12.       
  13.     <java.version>1.7java.version>  
  14.   properties>  
  15.   
  16.        spring boot 父节点依赖,  
  17.        引入这个之后相关的引入就不需要添加version配置,  
  18.        spring boot会自动选择最合适的版本进行添加。  
  19.      –>  
  20.     <parent>  
  21.        <groupId>org.springframework.bootgroupId>  
  22.        <artifactId>spring-boot-starter-parentartifactId>  
  23.        <version>1.4.0.RELEASEversion>  
  24.     parent>  
  25.    
  26.   <dependencies>  
  27.     <dependency>  
  28.       <groupId>junitgroupId>  
  29.       <artifactId>junitartifactId>  
  30.       <scope>testscope>  
  31.     dependency>  
  32.      
  33.       
  34.     <dependency>  
  35.        <groupId>org.springframework.bootgroupId>  
  36.        <artifactId>spring-boot-starter-jerseyartifactId>  
  37.     dependency>  
  38.      
  39.   dependencies>  
  40.   <build>  
  41.   <plugins>  
  42.         <plugin>  
  43.             <artifactId>maven-compiler-pluginartifactId>  
  44.             <configuration>  
  45.             <source>1.7source>  
  46.             <target>1.7target>  
  47.             configuration>  
  48.         plugin>  
  49.     plugins>      
  50.     <finalName>spring-boot-JerseyfinalName>  
  51.   build>  
  52. project>  

  4.0.0
  spring-boot-Jersey
  spring-boot-Jersey
  war
  0.0.1-SNAPSHOT
  spring-boot-Jersey
  http://maven.apache.org
  
    UTF-8
    
    1.7
  
  
    
       org.springframework.boot
       spring-boot-starter-parent
       1.4.0.RELEASE
    

  
    
      junit
      junit
      test
    

    
    
       org.springframework.boot
       spring-boot-starter-jersey
    

  
  
  
        
            maven-compiler-plugin
            
            1.7
            1.7
            
        
        
    spring-boot-Jersey
  


App.java

[html] view plain copy
print ?
  1. package com.zjq;  
  2.   
  3. import org.glassfish.jersey.servlet.ServletContainer;  
  4. import org.glassfish.jersey.servlet.ServletProperties;  
  5. import org.springframework.boot.SpringApplication;  
  6. import org.springframework.boot.autoconfigure.SpringBootApplication;  
  7. import org.springframework.boot.web.servlet.ServletRegistrationBean;  
  8. import org.springframework.context.annotation.Bean;  
  9.   
  10. import com.zjq.config.JerseyConfig;  
  11.   
  12. @SpringBootApplication  
  13. public class App {  
  14.     public static void main(String[] args) {  
  15.         SpringApplication.run(App.class, args);  
  16.     }  
  17.       
  18.     @Bean  
  19.     public ServletRegistrationBean jersetServlet(){  
  20.         ServletRegistrationBean registration = new ServletRegistrationBean(new ServletContainer(), ”/jersey/*”);  
  21.         // our rest resources will be available in the path /jersey/*  
  22.         registration.addInitParameter(ServletProperties.JAXRS_APPLICATION_CLASS, JerseyConfig.class.getName());  
  23.         return registration;  
  24.     }  
  25. }  
package com.zjq;

import org.glassfish.jersey.servlet.ServletContainer;
import org.glassfish.jersey.servlet.ServletProperties;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;

import com.zjq.config.JerseyConfig;

@SpringBootApplication
public class App {
    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }

    @Bean
    public ServletRegistrationBean jersetServlet(){
        ServletRegistrationBean registration = new ServletRegistrationBean(new ServletContainer(), "/jersey/*");
        // our rest resources will be available in the path /jersey/*
        registration.addInitParameter(ServletProperties.JAXRS_APPLICATION_CLASS, JerseyConfig.class.getName());
        return registration;
    }
}

JerseyConfig.java

[java] view plain copy
print ?
  1. package com.zjq.config;  
  2.   
  3. import org.glassfish.jersey.server.ResourceConfig;  
  4. import org.glassfish.jersey.server.spring.scope.RequestContextFilter;  
  5.   
  6. public class JerseyConfig extends ResourceConfig{  
  7.     public JerseyConfig() {  
  8.            register(RequestContextFilter.class);  
  9.            //配置restful package.  
  10.            packages(”com.zjq”);  
  11.         }  
  12. }  
package com.zjq.config;

import org.glassfish.jersey.server.ResourceConfig;
import org.glassfish.jersey.server.spring.scope.RequestContextFilter;

public class JerseyConfig extends ResourceConfig{
    public JerseyConfig() {
           register(RequestContextFilter.class);
           //配置restful package.
           packages("com.zjq");
        }
}

JerseyTest.java

[java] view plain copy
print ?
  1. package com.zjq;  
  2.   
  3. import java.util.HashMap;  
  4. import java.util.Map;  
  5.   
  6. import javax.ws.rs.GET;  
  7. import javax.ws.rs.Path;  
  8. import javax.ws.rs.Produces;  
  9. import javax.ws.rs.core.MediaType;  
  10.   
  11. import org.springframework.stereotype.Component;  
  12.   
  13. @Path(“/”)  
  14. @Component  
  15. public class JerseyTest {  
  16.     @GET  
  17.     @Produces(MediaType.APPLICATION_JSON)  
  18.     @Path(“/hello”)  
  19.     public Map hello() {  
  20.        Map map = new HashMap();  
  21.        map.put(”code”,“1”);  
  22.        map.put(”codeMsg”“success”);  
  23.        return map;  
  24.     }  
  25. }  
package com.zjq;

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

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import org.springframework.stereotype.Component;

@Path("/")
@Component
public class JerseyTest {
    @GET
    @Produces(MediaType.APPLICATION_JSON)
    @Path("/hello")
    public Map hello() {
       Map map = new HashMap();
       map.put("code","1");
       map.put("codeMsg", "success");
       return map;
    }
}

访问:http://localhost:8080/jersey/hello

结果:

{"codeMsg":"success","code":"1"}

你可能感兴趣的:(spring,Java)