1、服务提供者1的控制器
package com.springcloud.controller;
import com.springcloud.enties.CommonResult;
import com.springcloud.enties.Payment;
import com.springcloud.service.PaymentService;
import lombok.extern.log4j.Log4j;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
* @author dc
* @date 2020/7/18 - 16:43
*/
@RestController
@Slf4j
public class PaymentController {
@Resource
private PaymentService paymentService;
@Value("${server.port}")
private String port;
@PostMapping("/payment/first")
//此处必须加上@RequestBody 注解,否则不能从上一个请求模块中获取payment值。
public CommonResult doFirst(@RequestBody Payment payment) {
System.out.println("==========================");
System.out.println("payment = " + payment);
int result = paymentService.addPayment(payment);
log.info("*******插入结果:" + result);
if (result > 0) {
return new CommonResult(200, "插入数据库成功 , port = " + port, result);
}else {
return new CommonResult(444, "插入数据库失败", null);
}
}
@GetMapping("/payment/second")
public CommonResult doSecond(Long id) {
Payment payment = paymentService.findPayment(id);
log.info("*******查找结果:" + payment);
if (payment != null) {
return new CommonResult(200, "数据查找成功 , port = " + port, payment);
}else {
return new CommonResult(444, "数据查找失败", payment);
}
}
}
2、服务提供者2的控制器
package com.springcloud.controller;
import com.springcloud.enties.CommonResult;
import com.springcloud.enties.Payment;
import com.springcloud.service.PaymentService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
* @author dc
* @date 2020/7/18 - 16:43
*/
@RestController
@Slf4j
public class PaymentController {
@Resource
private PaymentService paymentService;
@Value("${server.port}")
private String port;
@PostMapping("/payment/first")
//此处必须加上@RequestBody 注解,否则不能从上一个请求模块中获取payment值。
public CommonResult doFirst(@RequestBody Payment payment) {
System.out.println("==========================");
System.out.println("payment = " + payment);
int result = paymentService.addPayment(payment);
log.info("*******插入结果:" + result);
if (result > 0) {
return new CommonResult(200, "插入数据库成功 , port = " + port, result);
}else {
return new CommonResult(444, "插入数据库失败", null);
}
}
@GetMapping("/payment/second")
public CommonResult doSecond(Long id) {
Payment payment = paymentService.findPayment(id);
log.info("*******查找结果:" + payment);
if (payment != null) {
return new CommonResult(200, "数据查找成功 , port = " + port, payment);
}else {
return new CommonResult(444, "数据查找失败", payment);
}
}
}
3、消费者的控制器
package com.springcloud.controller;
import com.springcloud.enties.CommonResult;
import com.springcloud.enties.Payment;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import javax.annotation.Resource;
/**
* @author dc
* @date 2020/7/20 - 9:57
*/
@RestController
@Slf4j
public class OrderController {
//public static final String PAYMENT_URL="http://127.0.0.1:8081";
public static final String PAYMENT_URL="http://PAYMENT-PROVIDER";
@Autowired
private RestTemplate restTemplate;
@GetMapping("/consumer/first")
public CommonResult<Payment> doFirst(Payment payment) {
System.out.println(payment);
System.out.println("========================");
return restTemplate.postForObject(PAYMENT_URL + "/payment/first",
payment, CommonResult.class);
}
@GetMapping("/consumer/second")
public CommonResult<Payment> doSecond(Long id) {
return restTemplate.getForObject(PAYMENT_URL + "/payment/second?id=" +
id, CommonResult.class);
}
}
4、消费者的配置类
package com.springcloud.config;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
/**
* @author dc
* @date 2020/7/20 - 10:01
*/
@Configuration
public class ApplicationContextConfig {
//@Bean:相当于 <bean id="" class=""/>
@Bean
@LoadBalanced //如果集群,必须添加负载均衡注解
public RestTemplate getRestTemplate(){
return new RestTemplate();
}
}