zoukankan      html  css  js  c++  java
  • Spring Boot + Jersey

    Jersey是一个很好的Java REST API库。当你用Jersey实现REST的时候。是很自然的。同一时候Spring Boot是Java世界中还有一个很好的工具。它降低了程序的应用配置(《初识Spring Boot》)。这篇博客就介绍下怎样将Jersey和Spring Boot结合起来使用。


    须要注意的是Jersey本身自带了hk2这样一个DI库,所以,在结合Spring Boot使用的时候,是比較easy搞混淆的。简单的讲,你应该分清楚,哪一部分是由Spring来管理,哪一部分是由Jersey的hk2来管理。


    创建一个JerseyConfig类,用来配置Jersey:

    public class JerseyConfig extends ResourceConfig {
        public JerseyConfig() {
            register(JacksonFeature.class);
            
            register(ProductsResource.class);
            register(ProductRepository.class);
        }
    }

    当中,ProductsResource是我们的REST API:

    @Path("/products")
    public class ProductsResource {
        @Inject
        private ProductRepository productRepository;

        //... ...

        @GET
        @Path("{id}")
        @Produces(MediaType.APPLICATION_JSON)
        public ProductRefJson getProductById(@PathParam("id") int id) {
            final Product product = productRepository.findByProductId(id);
            if (product == null) {
                throw new ResourceNotFoundException();
            }
            return new ProductRefJson(product);
        }
    }

    ProductRespository就是我们查找Product的类,这里须要注意的一点是我们看到ProductsResource并不含有类似@Component这种annotation,这是由于这个类是REST API,它应该由Jersey中的hk2来管理,所以,不要加@Component。


    这样,我们已经完毕了Jersey REST API所须要的最简配置。以下就是让Spring Boot怎么知道Jersey的存在:


    @EnableAutoConfiguration
    public class Application{
        public static void main(String[] args) {
            new SpringApplicationBuilder(Application.class)
                    .showBanner(false)
                    .run(args);
        }

        @Bean
        public ServletRegistrationBean jerseyServlet() {
            ServletRegistrationBean registration = new ServletRegistrationBean(new ServletContainer(), "/*");
            registration.addInitParameter(ServletProperties.JAXRS_APPLICATION_CLASS, JerseyConfig.class.getName());
            return registration;
        }
    }


    启动Application就能执行这个REST Webservie了:

    curl -X GET http://localhost:8080/products/1

    返回结果: 

    {"id":1,"name":"apple juice","uri":"/products/1","pricings_uri":"/products/1/pricings","current_price":{"uri":"/products/1/current","price":0},"description":"good"}



    博客完毕的比較仓促,假设有描写叙述错误或者不准确的地方。欢迎指出来。

  • 相关阅读:
    电子商务运营模式
    PHP 常用资源
    Ajax 常用资源
    java 常用资源
    Net 常用资源
    Web App 响应式页面制作 笔记整理
    移动端click事件延迟300ms该如何解决
    阻止冒泡事件
    关于jquery stopPropagation()阻止冒泡事件
    集算器如何处理类文本数据计算
  • 原文地址:https://www.cnblogs.com/llguanli/p/7152259.html
Copyright © 2011-2022 走看看