二、Spring Cloud Alibaba环境搭建

文章介绍了如何基于SpringCloudAlibaba搭建分布式架构,包括依赖环境的配置,如Java1.8和Maven3.2.x。详细步骤涉及创建父项目与子服务项目,使用RestTemplate进行服务间调用。然后展示了如何将原有的服务调用模式转化为SpringCloudAlibaba微服务,通过版本管理简化项目构建,并提供了相关版本的适配信息。
摘要由CSDN通过智能技术生成

一、依赖环境

SpringCloud Alibaba 依赖 Java 环境来运行。还需要为此配置 Maven环境,请确保是在以下版本环境中安装使用。

  • 64 bit JDK 1.8+;
  • Maven 3.2.x+。

spring-cloud-alibaba相关网址:

地址:https://github.com/alibaba/spring-cloud-alibaba/wiki

地址:https://spring.io/projects/spring-cloud-alibaba#learn

二、版本、组件之间的适配关系

spring Cloud Alibaba版本需和spring Boot版本相互对应。
版本对应地址(github Alibaba网址)
https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E
在这里插入图片描述

在这里插入图片描述

spring Cloud Alibaba脚手架地址:https://start.aliyun.com/
也可以用该脚手架进行搭建,网页配置进行下载或者用IDEA进行生成。
在这里插入图片描述

三、搭建一个分布式架构进行服务调用

创建一个分布式项目,创建一个主项目springcloud-demo。
再创建两个module(springboot项目,maven使用父级的),分别是order订单和stock库存服务。

1、创建一个父级项目结构-springcloud-demo。采用springboot项目进行创建。

在这里插入图片描述

2、src等删除,留着pom即可,pom文件加入pom配置。

在这里插入图片描述

3、创建order子服务,建议创建maven项目,maven配置由父项目全局使用,IDEA会自动在maven中注册子服务。

在这里插入图片描述
修改maven,新增spring-boot-starter配置,并且自行写OrderApplication启动类,就是一个简答的springboot项目。
在这里插入图片描述

在RestConfig中注入RestTemplate,用于简单调用远端服务

@Component
public class RestConfig {
    @Bean("RestTemplate")
    public RestTemplate restTemplate(RestTemplateBuilder builder){
        return builder.build();
    }
}

OrderController写一个新增订单接口,调用库存服务。

@RestController
@RequestMapping("/order")
public class OrderController {
    @Autowired
    RestTemplate restTemplate;
    @RequestMapping("add")
    public  String add(){
        System.out.println("新增订单");
        //调用库存服务
        String forObject = restTemplate.getForObject("http://localhost:8811/stock/reduce", String.class);
        return "新增订单,"+forObject;
    }
}

同样,创建stock子服务,写一个stock/reduce接口(即上面代码进行调用)给order服务调用。
在这里插入图片描述

访问测试:
在这里插入图片描述

该分布式架构之前服务调用关系错综复杂,难以维护。

四、修改为spring cloud alibaba微服务

案例版本选择:
在这里插入图片描述

  • Spring Cloud Alibaba Version:2.2.6.RELEASE。组件版本会根据选择的Spring Cloud Alibaba版本自行依赖,无需手动修改。
  • Spring Boot Version:2.3.2.RELEASE
  • Spring Cloud Version:Spring Cloud Hoxton.SR9

父maven项目中引入spring-cloud-alibaba即可。
如何使用见:
https://github.com/alibaba/spring-cloud-alibaba/blob/2022.x/README-zh.md

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>2022.0.0.0-RC2</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

我们对之前父级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>
    <modules>
        <module>order</module>
        <module>stock</module>
    </modules>
    <!--<parent>-->
        <!--<groupId>org.springframework.boot</groupId>-->
        <!--<artifactId>spring-boot-starter-parent</artifactId>-->
        <!--<version>2.3.11.RELEASE</version>-->
        <!--<relativePath/> &lt;!&ndash; lookup parent from repository &ndash;&gt;-->
    <!--</parent>-->

    <groupId>com.tc</groupId>
    <artifactId>springcloud-demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springcloud-demo</name>
    <description>springcloud-demo</description>
   <!--    不打包主模块-->
    <packaging>pom</packaging>

   <!-- 版本管理-->
    <properties>
        <java.version>1.8</java.version>
        <spring.cloud.alibaba.version>2.2.6.RELEASE</spring.cloud.alibaba.version>
        <spring.cloud.version>Hoxton.SR9</spring.cloud.version>
        <spring.boot.version>2.3.2.RELEASE</spring.boot.version>
    </properties>
    
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</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-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

	<!-- 需要继承的包都放在这里面-->
    <dependencyManagement>
        <dependencies>
            <!--spring-cloud-alibaba版本管理,通过dependency完成继承-->
            <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>

            <!--spring-cloud版本管理-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring.cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <!--spring-boot版本管理,其实就是上面的parent移到这来进行管理-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-parent</artifactId>
                <version>${spring.boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

怪异的bug

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值