在订单工程rpc远程调用服务提供工程的接口,主要使用类RestTemplate
相关配置如下:
首先是pom文件和properties文件的配置,这里可以参考以下
关于eureka注册服务以及订单微服务的配置
接下来就是关于RestTemplate的配置
1.首先是创建工具类统一封装数据返回
import java.io.Serializable;
public class JsonResult<T> implements Serializable {
public static final Integer OK = 200;
public static final Integer FAID = 404;
private Integer state;
private String message;
private T data;
public JsonResult() {
}
public JsonResult(Integer state, String message, T data) {
this.state = state;
this.message = message;
this.data = data;
}
public JsonResult(Integer state, T data) {
this.state = state;
this.data = data;
}
public JsonResult(Integer state) {
this.state = state;
}
public JsonResult(Integer state, Throwable e) {
this.state = state;
this.message = e.getMessage();
}
public Integer getState() {
return state;
}
public void setState(Integer state) {
this.state = state;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
}
2.然后是创建相关配置类创建RestTemplate
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
@Configuration
public class ApplicationConfig {
@Bean("restTemplate")
public RestTemplate getRestTemplate(){
return new RestTemplate();
}
}
3.最后是controller层的调用
对于远程接口调用可以直接调用RestTemplate相关的接口
通常
- 写操作使用postForObject接口
- 读操作使用getForObject接口
@RestController
public class MyController {
@Resource
private RestTemplate restTemplate;
@RequestMapping("/f1")
//这里o为要写入的数据,数据的注入方式与springmvc一致
public JsonResult<Object> f1(Object o){
return restTemplate.postForObject("远程调用的url",o,JsonResult.class);
}
@RequestMapping("/f2")
public JsonResult<Object> f2(Integer id){
return restTemplate.getForObject("远程调用的url",JsonResult.class);
}
}