zoukankan      html  css  js  c++  java
  • 04-SpringCloud 消费者订单模块搭建

    为什么要创建消费者订单模块?

      应为上一章节已经创建了提供者,而有提供者,就要有消费者,不然提供者的存在就是没有意义的

    上一章已经截图了创建模块的流程,所以之后就只写关键的步骤了

    创建消费者订单模块

    创建module

    创建名为cloud-consumer-order80的maven工程。

    修改POM.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <parent>
            <artifactId>springcloud</artifactId>
            <groupId>com.dance</groupId>
            <version>1.0-SNAPSHOT</version>
        </parent>
        <modelVersion>4.0.0</modelVersion>
    
        <artifactId>cloud-consumer-order80</artifactId>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
                <scope>runtime</scope>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
    </project>
    

    创建application.yml

    server:
      port: 80
    

    新建主启动类

    package com.dance.springcloud;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    /**
     * Hello world!
     *
     */
    @SpringBootApplication
    public class OrderMain80
    {
        public static void main( String[] args ){
            SpringApplication.run(OrderMain80.class, args);
        }
    }
    

    新建实体类

    package com.dance.springcloud.entities;
    
    import lombok.AllArgsConstructor;
    import lombok.Data;
    import lombok.NoArgsConstructor;
    
    import java.io.Serializable;
    
    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public class Payment implements Serializable {
        private Long id;
        private String serial;
    }
    
    package com.dance.springcloud.entities;
    
    import lombok.AllArgsConstructor;
    import lombok.Data;
    import lombok.NoArgsConstructor;
    
    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public class CommonResult<T>{
        private Integer code;
        private String message;
        private T data;
    
        public CommonResult(Integer code, String message){
            this(code, message, null);
        }
    }
    

    新建控制层

    package com.dance.springcloud.controller;
    
    import com.dance.springcloud.entities.CommonResult;
    import com.dance.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;
    
    @Slf4j
    @RestController
    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){
    
            return restTemplate.postForObject(PAYMENT_URL+"/payment/create", payment, CommonResult.class);
        }
    
        @GetMapping("/consumer/payment/get/{id}")
        public CommonResult<Payment> getPayment(@PathVariable("id") Long id){
            return restTemplate.getForObject(PAYMENT_URL+"/payment/get/"+id, CommonResult.class);
        }
    }
    

    新建RestTmplate配置类

    package com.dance.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();
        }
    
    }
    

    测试

    运行cloud-consumer-order80与cloud-provider-payment8001两工程

    浏览器 - http://localhost/consumer/payment/get/1

    RestTemplate

    RestTemplate提供了多种便捷访问远程Http服务的方法,是一种简单便捷的访问restful服务模板类,是Spring提供的用于访问Rest服务的客户端模板工具集

    调用80创建接口创建一条数据
    image
    返回的是创建成功,但是发现数据库这条数据,的名字是空的,并没有传入值
    image
    解决办法,在loud-provider-payment8001工程的PaymentController中添加@RequestBody注解。

    public class PaymentController
    {
    
        @PostMapping(value = "/payment/create")
        public CommonResult create(@RequestBody/*添加到这里*/ Payment payment){
    		...
        }
    }
    

    重启8001服务再次测试
    image
    查看数据库
    image
    添加成功

    作者:彼岸舞
    时间:2021816
    内容关于:Spring Cloud H版
    本文属于作者原创,未经允许,禁止转发

  • 相关阅读:
    jni中c代码调用java代码
    android 自动生成jni C语言头文件
    android jni下c文件怎么输出logcat
    android jni java类型与c语言类型互换
    约瑟夫环问题
    LeetCode面试题17.16 按摩师
    杂记
    书接上回,继续获取各链接内的小说内容
    正则表达式爬取小说各章节链接
    python爬虫学习心得:中国大学排名(附代码)
  • 原文地址:https://www.cnblogs.com/flower-dance/p/15170866.html
Copyright © 2011-2022 走看看