【Java进阶营】Java架构师入门到精通之微服务架构编码构建(二)

一、前言

本文通过实现简单的订单支付业务,来对微服务架构的构建进行练习。本文是对微服务架构编码构建(一)的完善,上一篇文章构建了微服务的提供者,接下来构建微服务的消费者。

二、微服务工程构建

cloud-consumer-order80微服务消费者订单Module模块

(1) 创建cloud-consumer-order80模块

(2) 改写pom.xml



    
        cloud2020
        com.exercise.springcloud
        1.0-SNAPSHOT
    
    4.0.0

    cloud-consumer-order80

    
        
        
            org.springframework.boot
            spring-boot-starter-web
        

        
        
            org.springframework.boot
            spring-boot-starter-actuator
        

        
        
            org.springframework.boot
            spring-boot-devtools
            runtime
            true
        

        
        
            org.projectlombok
            lombok
            true
        

        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    


(3) 写application.yml

server:
  port: 80

(4) 写主启动类

package com.exercise.springcloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class OrderMain80 {
    public static void main(String[] args) {
        SpringApplication.run(OrderMain80.class,args);
    }
}

(5) 写业务

这边目前使用RestTemplate来进行远程访问。
RestTemplate是什么?
提供了多种便捷访问远程Http服务的方法,是一种简单便捷的访问restful服务模板类,是spring提供的用于访问rest服务的客户端模板工具集。使用restTemplate访问restful接口(url,requestMap,ResponseBean.class)三个参数:rest请求地址、请求参数、http响应转换被转换成的对象类型。在此我向大家推荐一个架构学习交流圈。交流学习伪鑫:1253431195(里面有大量的面试题及答案)里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化、分布式架构等这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多
官网地址:

https://docs.spring.io/spring-framework/docs/5.2.2.RELEASE/javadoc-api/org/springframework/web/client/RestTemplate.html

1、Config配置类

package com.exercise.springcloud.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

@Configuration
public class ApplicationContextConfig {

    @Bean
    public RestTemplate getRestTemplate(){
        return new RestTemplate();
    }
}

2、创建controller

package com.exercise.springcloud.controller;

import com.exercise.springcloud.entities.CommonResult;
import com.exercise.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;

@RestController
@Slf4j
public class OrderController {

    public static final String PAYMENT_URL = "http://localhost:8001";

    @Resource
    private RestTemplate restTemplate;

    @GetMapping("/consumer/payment/create")
    public CommonResult   create(Payment payment){
        return restTemplate.postForObject(PAYMENT_URL+"/payment/create",payment,CommonResult.class);  //写操作
    }

    @GetMapping("/consumer/payment/get/{id}")
    public CommonResult getPayment(@PathVariable("id") Long id){
        return restTemplate.getForObject(PAYMENT_URL+"/payment/get/"+id,CommonResult.class);
    }
}

(6) 测试

查询数据:
【Java进阶营】Java架构师入门到精通之微服务架构编码构建(二)_第1张图片

插入数据:
image.png

注意:在cloud-provider-payment8001微服务提供者支付模块的controller中的create方法参数中要加上@RequestBody注解,不然这边通过浏览器插入数据虽然提示200,但数据库会出现键插入成功,值为空的情况。如下图所示:
image.png

【Java进阶营】Java架构师入门到精通之微服务架构编码构建(二)_第2张图片

你可能感兴趣的:(spring,java,spring,boot,spring,cloud,架构)