SpringBoot整合jersey

https://blog.csdn.net/github_38395241/article/details/70265379

这篇文章主要从以下几个方面来介绍。简单介绍下jersey,springboot,重点介绍如何整合springboot与jersey。

什么是jersey
什么是springboot
为什么要使用springboot+jersey
如何整合springboot与jersey
什么是jersey
阅读官方文档请点击:jsersey。RESTful Web Services in Java即java中的一种restful框架。jersey使用了JAX-RS规范来约束API的开发。既然jersey是基于restful风格的框架,那么什么是restful呢,主要有以下几点:

在rest认为,一切都可以被称为资源。
每个资源都由uri标识。要访问这个资源,必须通过对应的uri去访问。
访问资源使用POST,GET,PUT,DELETE。POST为新增接口,GET为获取接口,PUT为修改接口,DELETE为删除接口。
通过XML/JSON去通信
每次请求都是独立的。
什么是springboot
简单介绍一下,Springboot是由spring衍生的一个框架,boot是轻量的意思,即轻量级的spring。Springboot继承了spring的特性,但是呢,觉得spring太繁琐,于是springboot就简化了spring的配置,不需要写复杂的配置文件就可以实现spring原有的功能特点。只需要在pom.xml中引入依赖就能实现各种模块和技术的整合。

为什么要使用springboot+jersey
如果要实现rest,jersey是一个很不错的选择。springboot是java中一个轻量级的框架,能简化配置,不复杂且功能齐全,因此结合起来使用,也是一个不错的选择。

如何整合springboot与jersey
1.创建maven项目 
2.添加springboot配置。 
(1)在pom.xml中添加springboot父依赖

   
   
        org.springframework.boot
        spring-boot-starter-parent
        1.5.1.RELEASE
   

1
2
3
4
5
6
(2)在pom.xml中添加springbootweb依赖和junit单元测试依赖(如不使用单元测试,可不加),引入依赖后在控制台执行命令 mvn clean install

   
       
       
            org.springframework.boot
            spring-boot-starter-web
       

       
       
            junit
            junit
            4.12
       

   
1
2
3
4
5
6
7
8
9
10
11
12
13
14
(3)创建Springboot入口:Application.java,此时一个springboot的maven项目已经创建成功,执行main函数就可以启动项目。(是不是确实很轻量级..?)

package com.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * Created by Angela on 2017/4/20.
 */
@SpringBootApplication
public class Application {
    public static void main(String[] args){
        //springboot 入口
        SpringApplication.run(Application.class,args);
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
(4)添加jersey依赖,在pom.xml中添加依赖,在控制台执行命令mvn install


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

1
2
3
4
(5)创建jersey配置文件

package com.demo.config.jersey;


import org.glassfish.jersey.server.ResourceConfig;
import org.springframework.stereotype.Component;

/**
 * Created by Angela on 2017/4/20.
 */
@Component
public class JerseyConfig extends ResourceConfig {

    public JerseyConfig() {
        //构造函数,在这里注册需要使用的内容,(过滤器,拦截器,API等)
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
此时,基于jersey的springboot项目已经搭建成功。我们写demo来验证一下。
1
(6)基于jersey的api使用 
配置文件: 
创建项目的配置文件application.yml,指定name为local,端口号为8081,如下:

spring:
name: local
server:
    port: 8081
1
2
3
4
资源,即API,这里以get方法为例:

package com.demo.web;

import com.demo.model.City;
import org.springframework.stereotype.Component;

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

/**
 * Created by Angela on 2017/4/20.
 */
@Component
@Path("/demo")
public class Demo {

    //path注解指定路径,get注解指定访问方式,produces注解指定了返回值类型,这里返回JSON
    @Path("/city")
    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public City get(){
        City city = new City();
        city.setId(1L);
        city.setCityName("beijing");
        city.setCityCode("001");
        System.out.println(city.toString());
        return city;
    }

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
jersey配置(有两种注册方式,注册类,注册包):

package com.demo.config.jersey;


import com.demo.web.Demo;
import org.glassfish.jersey.server.ResourceConfig;
import org.springframework.stereotype.Component;

/**
 * Created by Angela on 2017/4/20.
 */
@Component
public class JerseyConfig extends ResourceConfig {

    public JerseyConfig() {
         //注册类的方式
//        register(Demo.class);

        //注册包的方式
        packages("com.demo.web");
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
这里有个小坑。项目打为jar包启动时,不能使用包注册的方式,否则会报FileNotFound异常。 
此时,demo已经完成,我们可以通过浏览器或其他工具访问接口,访问路径:http://localhost:8081/demo/city,返回JSON字符串:{“id”:1,”cityName”:”beijing”,”cityCode”:”001”}。

项目代码地址:https://github.com/fengqing0216/learning.git
--------------------- 
作者:Angela_Feng 
来源:CSDN 
原文:https://blog.csdn.net/github_38395241/article/details/70265379 
版权声明:本文为博主原创文章,转载请附上博文链接!

你可能感兴趣的:(eureka)