【问题标题】:Using Spring RestTemplate in JAX-RS project在 JAX-RS 项目中使用 Spring RestTemplate
【发布时间】:2017-02-13 14:14:07
【问题描述】:

我的项目由 5 个模块组成。其中只有一个使用 JAX-RS,其他使用 Spring。我目前的任务是开发服务,将 HTTP 请求发送到某些 API。我想为这个任务使用 Spring RestTemplate,但问题是带有 JAX-RS 的项目没有 RestTemplate 类和其他需要的依赖项。我想用:

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>4.2.5.RELEASE</version>
</dependency>

在 JAX-RS 模块中,以避免 RestTemplate 和某些 JAX-RS 客户端的代码重复。这是个好主意吗?没有spring-core 依赖,RestTemplate 会正常工作吗?

【问题讨论】:

  • 您可以使用 spring-jersey 集成。在此之后,您可以像在任何 spring 项目中一样使用 spring 依赖项。 org.glassfish.jersey.extjersey-spring32.23.2
  • 尝试在没有弹簧芯的情况下创建 RestTemplate 对象。如果它正在被创建,你就不需要它。

标签: spring rest jax-rs


【解决方案1】:

使用 RestTemplate

要使用RestTemplate,您只需要spring-web 依赖项:

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>4.3.3.RELEASE</version>
</dependency>

spring-web 依赖项具有 spring-core 作为传递依赖项。

要使用RestTemplate,很简单:

public class ExampleWithRestTemplate {

    public static void main(String[] args) {

        RestTemplate restTemplate = new RestTemplate();
        ResponseEntity<String> response = 
            restTemplate.getForEntity("http://date.jsontest.com", String.class);
        System.out.println(response.getBody());
    }
}

考虑将 JAX-RS 客户端 API 作为替代方案

除了RestTemplate,您还可以考虑使用JAX-RS 2.0 Client API 来使用REST Web 服务。 Jersey 是 JAX-RS 参考实现并提供了出色的 API。

要使用 Jersey 客户端 API,需要以下依赖项:

<dependency>
    <groupId>org.glassfish.jersey.core</groupId>
    <artifactId>jersey-client</artifactId>
    <version>2.23.2</version>
</dependency>

更多详情,请查看documentation

您也可以考虑Jersey Client Proxy API。这种方法的基本思想是将标准的 JAX-RS 注释附加到接口,然后通过服务器端的资源类实现该接口,同时通过使用 @ 动态生成该接口的实现,在客户端重用相同的接口987654330@ 调用正确的低级客户端 API 方法。

要使用 Jersey 客户端代理 API,需要以下依赖项:

<dependency>
    <groupId>org.glassfish.jersey.ext</groupId>
    <artifactId>jersey-proxy-client</artifactId>
    <version>2.23.2</version>
</dependency>

【讨论】:

  • 感谢您的回答,但我的问题不是RestTemplate 的替代品,而是在没有配置Spring@Configuration@BeanDispatcherServlet 等的情况下在项目中正常工作.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-19
  • 1970-01-01
  • 2011-10-04
  • 2019-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多