zoukankan      html  css  js  c++  java
  • Spring Cloud微服务安全实战_4-3_订单微服务&价格微服务

    实现一个场景:

    订单微服务:

     POM:

    <?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.nb.security</groupId>
        <artifactId>nb-order-api</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    
        <properties>
            <java.version>1.8</java.version>
        </properties>
    
    
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <!-- Import dependency management from Spring Boot -->
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-dependencies</artifactId>
                    <version>2.1.6.RELEASE</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
                <!--spring cloud-->
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-dependencies</artifactId>
                    <version>Greenwich.SR2</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
    
            </dependencies>
    
        </dependencyManagement>
    
        <dependencies>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
            <!--lombok-->
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
            </dependency>
    
        </dependencies>
    
        <build>
            <plugins>
    
                <!--指定JDK编译版本 -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                        <encoding>UTF-8</encoding>
                    </configuration>
                </plugin>
                <!-- 打包跳过测试 -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <configuration>
                        <skipTests>true</skipTests>
                    </configuration>
                </plugin>
    
    
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    </project>
    View Code

     yml 指定端口:

    server:
    port: 9060
    订单信息 OrderInfo.java:
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    public class OrderInfo {
    
        private Long productId;
    
    }
    
    

     价格信息 PriceInfo :

    @Data
    public class PriceInfo {
    
        private Long id;
    
        private BigDecimal price;
    }

    OrderControl:

    package com.nb.security.order;
    
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.web.bind.annotation.*;
    import org.springframework.web.client.RestTemplate;
    
    @Slf4j
    @RestController
    @RequestMapping("/orders")
    public class OrderController {
    
        private RestTemplate restTemplate = new RestTemplate();
    
    
    
        @PostMapping
        public OrderInfo create(@RequestBody OrderInfo info){
            //查询价格
            PriceInfo price = restTemplate.getForObject("http://localhost:9080/prices/"+info.getProductId(),PriceInfo.class);
            log.info("price is "+price.getPrice());
            return info;
        }
    
    
        @GetMapping
        public OrderInfo getInfo(@PathVariable Long id){
            log.info("getInfo: id is "+id);
            return new OrderInfo(id);
        }
    
    }
    价格微服务:
    
    

     POM:

    <?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        
        <groupId>com.nb.security</groupId>
        <artifactId>nb-price-api</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    
    
        <properties>
            <java.version>1.8</java.version>
        </properties>
    
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <!-- Import dependency management from Spring Boot -->
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-dependencies</artifactId>
                    <version>2.1.6.RELEASE</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
            </dependencies>
        </dependencyManagement>
    
        <dependencies>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
            <!--lombok-->
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
            </dependency>
    
    
        </dependencies>
    
        <build>
            <plugins>
    
                <!--指定JDK编译版本 -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                        <encoding>UTF-8</encoding>
                    </configuration>
                </plugin>
                <!-- 打包跳过测试 -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <configuration>
                        <skipTests>true</skipTests>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
        
        
    </project>
    View Code

    yml指定端口

    server:
    port: 9080
    价格信息实体info类:
    @Data
    public class PriceInfo {
    
        private Long productId;
    
        private BigDecimal price;
    }
    
    

    价格微服务Controller:

    /**
     * 价格服务
     */
    @Slf4j
    @RestController
    @RequestMapping("/prices")
    public class PriceController {
    
    
        @GetMapping("/{productId}")
        public PriceInfo getPrice(@PathVariable Long productId){
            log.info("product id is "+productId);
            PriceInfo info = new PriceInfo();
            info.setProductId(productId);
            info.setPrice(new BigDecimal(100));
            return info;
        }
    }

    启动两个服务,用postman请求下订单服务:

     查看控制台日志,可以看到两个服务都已调通。

     

     












  • 相关阅读:
    《大话设计模式》读书笔记
    设计模式个人笔记
    多线程的单元测试工具
    设计模式六大原则
    时间复杂度和空间复杂度(转)
    排序算法笔记
    《人月神话》读书笔记
    微信公众号开发踩坑记录(二)
    微信公众号开发踩坑记录
    全栈工程师之路
  • 原文地址:https://www.cnblogs.com/lihaoyang/p/12045369.html
Copyright © 2011-2022 走看看