Spring Cloud Alibaba 工程搭建(1)

简介

搭建 Spring cloud alibaba 是基于 阿里的一整套微服务治理组件,使用 nacos 作为注册中心与服务发现,以及使用 nacos 作为配置中心,使用 sentinel 经行服务限流以及降级处理。使用 gateway 作为网关,采用的数据库为 mysql。

相关组件说明

  • 通信⽅式:http restful
  • 注册中⼼:nacos
  • 配置中⼼:nacos
  • 断路器:sentinel
  • ⽹关:gateway
  • 分布式追踪系统:sleuth + zipkin

环境说明

  • spring boot 版本 2.3.3
  • spring cloud 版本 Hoxton.SR8
  • spring cloud alibaba 2.2.1.RELEASE
  • jdk 版本为 11

工程搭建

数据库搭建

我们这里使用的是 MySQL 数据库。我是使用 docker 搭建的 MySQL,方便高效。docker 安装 MySQL戳这里。

创建数据库以及对应的表

cloud_video
Spring Cloud Alibaba 工程搭建(1)_第1张图片

CREATE TABLE `video` (
 `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
 `title` varchar(524) DEFAULT NULL COMMENT '视频标题',
 `summary` varchar(1026) DEFAULT NULL COMMENT '概述',
 `cover_img` varchar(524) DEFAULT NULL COMMENT '封⾯图',
 `price` int(11) DEFAULT NULL COMMENT '价格, 分',
 `create_time` datetime DEFAULT NULL COMMENT '创建时间',
 `point` double(11,2) DEFAULT '8.70' COMMENT '默认8.7,最⾼10分',
 PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=48 DEFAULT
CHARSET=utf8;

工程源码项目搭建

第一步:创建 maven 项目作为父工程

Spring Cloud Alibaba 工程搭建(1)_第2张图片Spring Cloud Alibaba 工程搭建(1)_第3张图片
创建完成之后,将 src 文件删除
Spring Cloud Alibaba 工程搭建(1)_第4张图片

第二步:创建子 maven 工程

这里是创建 module
Spring Cloud Alibaba 工程搭建(1)_第5张图片
Spring Cloud Alibaba 工程搭建(1)_第6张图片
创建完了是这样子的,我们这里先是空的工程,后面我们会慢慢补充里面的内容
Spring Cloud Alibaba 工程搭建(1)_第7张图片最后,我们再创建完 common 模块,order 模块
Spring Cloud Alibaba 工程搭建(1)_第8张图片
模块说明:common 是公共的部分,order 是订单模块用来去调用 video 模块的接口

第三步:修改父工程的 pom 配置文件

父工程中的配置文件是为了指定依赖的版本

修改完成之后的 父 pom 文件内容如下:


<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">
    <modelVersion>4.0.0modelVersion>

    <groupId>com.demogroupId>
    <artifactId>demo-cloudartifactId>
    <packaging>pompackaging>
    <version>1.0-SNAPSHOTversion>

    <modules>
        <module>demo-videomodule>
        <module>demo-commonmodule>
        <module>demo-ordermodule>
    modules>

    <properties>
        <maven.compiler.source>11maven.compiler.source>
        <maven.compiler.target>11maven.compiler.target>
    properties>

    
    <dependencyManagement>
        <dependencies>

            
            
            <dependency>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-dependenciesartifactId>
                <version>2.3.3.RELEASEversion>
                <type>pomtype>
                <scope>importscope>
            dependency>

            
            
            <dependency>
                <groupId>org.springframework.cloudgroupId>
                <artifactId>spring-cloud-dependenciesartifactId>
                <version>Hoxton.SR8version>
                <type>pomtype>
                <scope>importscope>
            dependency>

            
            
            <dependency>
                <groupId>com.alibaba.cloudgroupId>
                <artifactId>spring-cloud-alibaba-dependenciesartifactId>
                <version>2.2.1.RELEASEversion>
                <type>pomtype>
                <scope>importscope>
            dependency>

            <dependency>
                <groupId>org.mybatis.spring.bootgroupId>
                <artifactId>mybatis-spring-boot-starterartifactId>
                <version>2.1.2version>
                <type>pomtype>
                <scope>importscope>
            dependency>

        dependencies>
    dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-maven-pluginartifactId>
                <configuration>
                    <fork>truefork>
                    <addResources>trueaddResources>
                configuration>
            plugin>
        plugins>
    build>

project>

第四步:修改子模块的 POM 文件

在 video 模块与 order 模块中引入对应的 spring-boot-starter-web 依赖

video 模块的 pom 文件


<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>demo-cloudartifactId>
        <groupId>com.demogroupId>
        <version>1.0-SNAPSHOTversion>
    parent>
    <modelVersion>4.0.0modelVersion>

    <artifactId>demo-videoartifactId>

    <properties>
        <maven.compiler.source>11maven.compiler.source>
        <maven.compiler.target>11maven.compiler.target>
    properties>

    <dependencies>
        <dependency>
            <groupId>com.demogroupId>
            <artifactId>demo-commonartifactId>
            <version>1.0-SNAPSHOTversion>
        dependency>

        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
        dependency>
    dependencies>

    <build>
        <finalName>demo-videofinalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-maven-pluginartifactId>
            plugin>
        plugins>
    build>
project>

order 模块的 pom 文件


<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>demo-cloudartifactId>
        <groupId>com.demogroupId>
        <version>1.0-SNAPSHOTversion>
    parent>
    <modelVersion>4.0.0modelVersion>

    <artifactId>demo-orderartifactId>

    <properties>
        <maven.compiler.source>11maven.compiler.source>
        <maven.compiler.target>11maven.compiler.target>
    properties>

    <dependencies>
        <dependency>
            <groupId>com.demogroupId>
            <artifactId>demo-commonartifactId>
            <version>1.0-SNAPSHOTversion>
        dependency>

        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
        dependency>
    dependencies>

    <build>
        <finalName>demo-orderfinalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-maven-pluginartifactId>
            plugin>
        plugins>
    build>
project>

common 模块的 pom 文件


<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>demo-cloudartifactId>
        <groupId>com.demogroupId>
        <version>1.0-SNAPSHOTversion>
    parent>
    <modelVersion>4.0.0modelVersion>

    <artifactId>demo-commonartifactId>

    <properties>
        <maven.compiler.source>11maven.compiler.source>
        <maven.compiler.target>11maven.compiler.target>
    properties>

    <build>
        <finalName>demo-commonfinalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-maven-pluginartifactId>
            plugin>
        plugins>
    build>
project>

第五步:创建对应模块的启动类以及配置文件

order 模块
Spring Cloud Alibaba 工程搭建(1)_第9张图片
OrderApplication.java

@SpringBootApplication
public class OrderApplication {
    public static void main(String[] args) {
        SpringApplication.run(OrderApplication.class, args);
    }
}

application.yml

server:
  port: 9000

spring:
  application:
    name: demo-order

尝试启动
Spring Cloud Alibaba 工程搭建(1)_第10张图片

video 模块
Spring Cloud Alibaba 工程搭建(1)_第11张图片
VideoApplication.java

@SpringBootApplication
public class VideoApplication {

    public static void main(String[] args) {
        SpringApplication.run(VideoApplication.class, args);
    }
}

application.yml

server:
  port: 8000

spring:
  application:
    name: demo-video

尝试启动
Spring Cloud Alibaba 工程搭建(1)_第12张图片
到此,我们的项目工程就搭建完成,后面一篇会集成数据相关链接,以及慢慢集成 nacos 以及其他的组件。

你可能感兴趣的:(Spring,Cloud,java,spring,cloud,spring,boot)