• springcloud-消费者订单模块


      1.创建订单模块

      2.引入依赖到pom.xml

       <dependencies>
            <!-- 包含了sleuth zipkin 数据链路追踪-->
    <!--        <dependency>-->
    <!--            <groupId>org.springframework.cloud</groupId>-->
    <!--            <artifactId>spring-cloud-starter-zipkin</artifactId>-->
    <!--        </dependency>-->
            <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>
            <!--eureka client-->
    <!--        <dependency>-->
    <!--            <groupId>org.springframework.cloud</groupId>-->
    <!--            <artifactId>spring-cloud-starter-netflix-eureka-client</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>

      3.改application.yml

    server:
      port: 80
    
    spring:
      application:
        name: cloud-consumer-orders

      4.写主程序类

      5.写业务

        1)设计表和创建表(本次不用)

        2)创建实体类(负责支付模块的即可,但是后面我们还得把这里公用的实体类抽取到一个模块中)

        3)dao(本次不用)

        4)service(本次不用)

        这里解释下这里为社么不写dao和service。首先我们的微服务是分为业务服务和非业务服务,这里的订单服务是一个消费者,业务和对数据库的操作不需要他来做,他去调用即可。并且这里演示是作为客户端角色的80端口的订单服务去调服务端的8001端口的支付服务,这只是为了演示服务之间的调用,真正开放80端口的应该是前端的项目,用户访问前端,然后前端来调用我们后端。

        5)controller

    @RestController
    @CrossOrigin
    @Slf4j
    public class OrdersController {
    
        private static final String PAYMENT_URL = "http://localhost:8001";
    
        @Autowired
        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 selectPayment(@PathVariable("id") Long id){
    
            return restTemplate.getForObject(PAYMENT_URL+"/payment/get/"+id,CommonResult.class);
        }
    
    }

      在以前我们服务之间的调用使用的有httpclient或webservice等,而这里的RestTemplate的底层实际就是httpclient,使用该模板对象就能模仿发送请求,不过得记住一点的是:他post请求发送的参数是以json格式发给其他服务的,因此在其他服务模块得使用@RequestBody,不然接收会出错。

     

      对了,这个RestTemplate得加入到IOC中,记得写给配置类,如下:

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

      6.测试

  • 相关阅读:
    再叙存储设备
    分布式文件系统---测试
    分布式文件系统
    Solr 分布式(复制)配置--成功验证
    搜索服务之离线处理思路
    我为公司做的总体架构,欢迎提建议
    python的面向对象
    python异常处理
    迭代器和生成器
    python函数
  • 原文地址:https://www.cnblogs.com/ibcdwx/p/14220389.html
Copyright © 2020-2023  润新知