在JAX-RS项目中使用Spring RestTemplate

时间:2016-10-05 08:19:18

标签: spring rest jax-rs

我的项目包含5个模块。其中只有一个使用JAX-RS,其他人使用Spring。我目前的任务是开发服务,它将向某些API发送HTTP请求。我想使用Spring WRITE_EXTERNAL_STORAGE执行此任务,但问题是JAX-RS的项目没有RestTemplate类和其他需要的依赖项。我想用:

RestTemplate

在JAX-RS模块中,以避免代码重复<dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>4.2.5.RELEASE</version> </dependency> 和某些JAX-RS客户端。这是好主意吗?如果没有RestTemplate依赖关系,RestTemplate会正常工作吗?

1 个答案:

答案 0 :(得分:4)

使用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 Client 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注释附加到接口,然后通过服务器端的资源类实现该接口,同时通过使用{动态生成该实现,在客户端重用相同的接口{3}}调用正确的低级客户端API方法。

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

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