SpringCloud环境搭建及入门案例

技术选型:

  • Maven 3.8.4+
  • SpringBoot 2.7.8
  • SpringCloud 2021.0.4
  • SpringCloudAlibaba 2022.0.1.0
  • Nacos 2.1.1
  • Sentinel 1.8.5

模块设计:

  • 父工程:SpringCloudAlibaba
  • 订单微服:order-service
  • 库存微服:stock-service

1.创建父工程模块,以及依赖管理

  依赖版本选择:

    <properties>
        <spring.cloud-version>2021.0.4</spring.cloud-version>
        <spring.boot-version>2.7.8</spring.boot-version>
        <spring.cloud.alibaba-version>2021.0.1.0</spring.cloud.alibaba-version>
    </properties>

  管理工程的依赖:

<!--    管理子工程的依赖-->
    <dependencyManagement>
        <dependencies>
<!--        SpringBoot的依赖管理-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring.boot-version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
<!--        SpringCloud的依赖管理    -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring.cloud-version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
<!--        管理SpringCloudAlibaba的依赖-->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring.cloud.alibaba-version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

2.创建子工程order和stoc

 2.1 包目录:

SpringCloud环境搭建及入门案例_第1张图片

 2.2 将子工程添加到父工程(pm.xml(SpringCloudAlibaba))

SpringCloud环境搭建及入门案例_第2张图片

 2.3在两个子工程中添加依赖(pom.xml(order),pom.xml(stock))

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

3. 编写order模块:

 3.1 编写order配置文件(application.yml)

在这里插入代码片server:
  port: 8081 #订单端口号
spring:
  application:
    name: order-service  #配置服务名称

 3.2编写controller控制器类

@RestController
@RequestMapping("/order")
public class OrderController {

    @GetMapping("/add")
    public String add(){
        System.out.println("订单创建成功");
        return  "订单创建成功";
    }
}

 3.3 进行测试

SpringCloud环境搭建及入门案例_第3张图片
SpringCloud环境搭建及入门案例_第4张图片

4. 编写stock模块:

 4.1 编写stock配置文件(application.yml)

server:
  port: 8091 #库存端口号
spring:
  application:
    name: order-service  #配置服务名称

 4.2编写controller控制器类

@RestController
@RequestMapping("/stock")
public class StockController {

    @GetMapping("/reduce")
    public String reduce(){
        System.out.println("已减库存");
        return "已减库存";
    }
}

 4.3 进行测试

SpringCloud环境搭建及入门案例_第5张图片
SpringCloud环境搭建及入门案例_第6张图片

5.实现远程调用

 例:当我们创建订单时,需要向库存中也添加一条数据。此时就需要执行远程调用。
 在微服之间实现远程调用需要使用到 RestTempate 对象。所以我们需要在订单微服中创建这个对象。因为我们的订单微服是属于消费端,则库存微服是属于提供端。

 5.1 创建配置类并配置Bean对象

@Configuration
public class OrderConfig {
//    通过new创建
    @Bean
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }

//  通过构建者对象创建
//    @Bean
//    @LoadBalanced
//    public RestTemplate restTemplate(RestTemplateBuilder builder){
//        RestTemplate restTemplate=builder.build();
//        return restTemplate;
//    }
}

 5.2 修改 OrderController 控制器类,在这个类中注入 RestTemplate 对象,然后面 save 方法来远程调用 stock-service微服

通过save远程调用了stock-service微服的reduce方法

@RestController
@RequestMapping("/order")
public class OrderController {

    @Autowired
    private RestTemplate restTemplate;

    @GetMapping("/add")
    public String add(){
        System.out.println("订单创建成功");

//      远程调用
        String url="http://localhost:8091/stock/reduce";
        /*
        * 1.通过getForObject方法实现远程调用
        * 2.这里用的是getForObject,是应为stock远程调用的是Get请求,如果是POst请求,则使用postForObject()方法
        * */
        String result = restTemplate.getForObject(url,String.class); //第一个参数是请求地址,第二个参数是返回数据封装类型
        return "订单创建成功:"+result;
    }
}

 5.3 进行测试

在这里插入图片描述
SpringCloud环境搭建及入门案例_第7张图片
SpringCloud环境搭建及入门案例_第8张图片

你可能感兴趣的:(SpringCloud)