我的项目包含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
会正常工作吗?
答案 0 :(得分:4)
要使用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());
}
}
代替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>