文件结构
其中CommonResult和Payment都拷贝于Provider模块
application.yml
server:
# http协议的默认端口就是80
port: 80
ApplicationContextConfig
package com.zerbel.springcloud.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
/**
* @Author: EzerbelCN
* @Date: 2020/7/19 15:33
*/
@Configuration
public class ApplicationContextConfig {
@Bean
public RestTemplate getRegetTemplate(){
return new RestTemplate();
}
}
OrderController
package com.zerbel.springcloud.controller;
import com.zerbel.springcloud.entities.CommonResult;
import com.zerbel.springcloud.entities.Payment;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import javax.annotation.Resource;
/**
* @Author: EzerbelCN
* @Date: 2020/7/19 15:26
*/
@RestController
@Slf4j
public class OrderController {
public static final String PAYMENT_URL="http://localhost:8001";
@Resource
private RestTemplate restTemplate;
@GetMapping("/consumer/payment/create")
public CommonResult<Payment> create(Payment payment){
//向支付模块发送一个请求,传过去的参数为payment,希望返回的类型为CommonResult
return restTemplate.postForObject(PAYMENT_URL+"/payment/create",payment,CommonResult.class);
}
@GetMapping("/consumer/payment/get/{id}")
public CommonResult<Payment> getPayment(@PathVariable("id") Long id){
log.info(PAYMENT_URL+"/payment/get/"+id);
return restTemplate.getForObject(PAYMENT_URL+"/payment/get/"+id,CommonResult.class);
}
}
运行测试
先启动Provider,再启动Consumer
报错1
Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.
Reason: Failed to determine a suitable driver class
原因:虽然没有用到mybatis,但是它的starter自动配置类会建立数据库链接,所以暂时将它其自动配置排除即可。
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class OrderMain80 {
public static void main(String[] args) {
SpringApplication.run(OrderMain80.class,args);
}
}
报错2
无法连接
原因:不知道啥时候,order的访问地址的传输协议被浏览器默认为了加密传输:https ,😂