zoukankan      html  css  js  c++  java
  • 3、Spring Cloud Rest工程创建(通过IDEA创建)

    1.Rest微服务构建简介

    (1).介绍

      以Dept部门模块做一个微服务通用案例Consumer消费者(Client)通过REST调用Provider提供者(Server)提供的服务。

    (2).Mybatis 

     https://www.cnblogs.com/HOsystem/category/1781871.html

    (3).Maven

    一个简单的Maven模块结构是这样的:

    ---- app-parent      一个父项目(app-parent)聚合很多子项目(app-util,app-dao,app-service,app-web)

          |---- pom.xml (pom)

          |

          |-------- app-util

          | |-------- pom.xml (jar)

          |

          |-------- app-dao

          | |-------- pom.xml (jar)

          |

          |-------- app-service

          | |-------- pom.xml (jar)

          |

          |-------- app-web

            |-------- pom.xml (war)

      一个Project带着多个Module子模块。

      MicroServiceCloud父工程(Project)下初次带着3个子模块(Module)。

    [1].microservicecloud-api

      封装的整体entity/接口/公共配置等


    [2].microservicecloud-provider-dept-8001

      微服务落地的服务提供者

    [3].microservicecloud-consumer-dept-80

      微服务调用的客户端使用;80端口

    80端口是为HTTP(HyperText Transport Protocol)即超文本传输协议开放的

    此为上网冲浪使用次数最多的协议,主要用于WWW(World Wide Web)即万维网传输信息的协议。

    可以通过HTTP地址(即常说的"网址")加":80"来访问网站,

    因为浏览网页服务默认的端口号都是80,因此只需输入网址即可,不用输入":80"了。

     

    2.SpringCloud版本

     

    3.Rest工程构建

      约定>配置>编码

    (1).microservicecloud整体父工程Project

      父工程microservicecloud,切记是Packageing是pom模式

     

    [1].创建microservicecloud工程

      IDEA中创建Maven父工程的时候不需要勾选'Create from archetype'

    [2].配置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 http://maven.apache.org/xsd/maven-4.0.0.xsd">

        <modelVersion>4.0.0</modelVersion>

     

        <groupId>com.hosystem</groupId>

        <artifactId>microservicecloud</artifactId>

        <version>1.0-SNAPSHOT</version>

        <packaging>pom</packaging>

     

        <properties>

            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

            <maven.compiler.source>1.8</maven.compiler.source>

            <maven.compiler.target>1.8</maven.compiler.target>

            <junit.version>4.12</junit.version>

            <log4j.version>1.2.17</log4j.version>

            <lombok.version>1.16.18</lombok.version>

        </properties>

     

     

        <dependencyManagement>

            <dependencies>

                <dependency>

                    <groupId>org.springframework.cloud</groupId>

                    <artifactId>spring-cloud-dependencies</artifactId>

                    <version>Dalston.SR1</version>

                    <type>pom</type>

                    <scope>import</scope>

                </dependency>

                <dependency>

                    <groupId>org.springframework.boot</groupId>

                    <artifactId>spring-boot-dependencies</artifactId>

                    <version>1.5.9.RELEASE</version>

                    <type>pom</type>

                    <scope>import</scope>

                </dependency>

                <dependency>

                    <groupId>mysql</groupId>

                    <artifactId>mysql-connector-java</artifactId>

                    <version>5.0.4</version>

                </dependency>

                <dependency>

                    <groupId>com.alibaba</groupId>

                    <artifactId>druid</artifactId>

                    <version>1.0.31</version>

                </dependency>

                <dependency>

                    <groupId>org.mybatis.spring.boot</groupId>

                    <artifactId>mybatis-spring-boot-starter</artifactId>

                    <version>1.3.0</version>

                </dependency>

                <dependency>

                    <groupId>ch.qos.logback</groupId>

                    <artifactId>logback-core</artifactId>

                    <version>1.2.3</version>

                </dependency>

                <dependency>

                    <groupId>junit</groupId>

                    <artifactId>junit</artifactId>

                    <version>${junit.version}</version>

                    <scope>test</scope>

                </dependency>

                <dependency>

                    <groupId>log4j</groupId>

                    <artifactId>log4j</artifactId>

                    <version>${log4j.version}</version>

                </dependency>

            </dependencies>

        </dependencyManagement>

     

     

     

    </project>

    #创建子工程microservicecloud-api之后 pom会发生变化

     

    <groupId>com.hosystem</groupId>

    <artifactId>microservicecloud</artifactId>

    <version>1.0-SNAPSHOT</version>

    <packaging>pom</packaging>

    <!--注:modules最开始创建的时候是不存在的,只有创建子工程的时候才会出现-->

    <modules>

        <module>microservicecloud-api</module>

    </modules>

    (2).microservicecloud-api

      公共子模块Module;new->Module

     

    [1].创建microservicecloud-api工程

      创建完成后请回到父工程查看pom文件变化

     

     

     

    [2].导入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 http://maven.apache.org/xsd/maven-4.0.0.xsd">

        <!-- 子类里面显示声明才能有明确的继承表现,无意外就是父类的默认版本否则自己定义 -->

        <parent>

            <artifactId>microservicecloud</artifactId>

            <groupId>com.hosystem</groupId>

            <version>1.0-SNAPSHOT</version>

        </parent>

        <modelVersion>4.0.0</modelVersion>

     

        <!--当前Module叫什么名字 -->

        <artifactId>microservicecloud-api</artifactId>

     

        <!-- 当前Module需要用到的jar包,按自己需求添加,如果父类已经包含了,可以不用写版本号 -->

        <dependencies>

            <dependency>

                <groupId>org.projectlombok</groupId>

                <artifactId>lombok</artifactId>

            </dependency>

        </dependencies>

     

    </project>

    [3].新建Entity

      新建部门Entity且配合lombok使用。

    package com.hosystem.springcloud.entities;

     

    import lombok.AllArgsConstructor;

    import lombok.Data;

    import lombok.NoArgsConstructor;

    import lombok.experimental.Accessors;

     

    import java.io.Serializable;

     

    @SuppressWarnings("serial")

    @AllArgsConstructor

    @NoArgsConstructor

    @Data

    @Accessors(chain = true)

    //Entity orm mysql->Dept(table) 类表关系映射 https://baike.baidu.com/item/%E5%AF%B9%E8%B1%A1%E5%85%B3%E7%B3%BB%E6%98%A0%E5%B0%84/311152?fromtitle=ORM&fromid=3583252&fr=aladdin

    public class Dept implements Serializable{  //必须序列化

        private Long  deptno;   //主键

        private String  dname;   //部门名称

        private String  db_source;//来自那个数据库,因为微服务架构可以一个服务对应一个数据库,同一个信息被存储到不同数据库

     

        public Dept(String dname) {

            this.dname = dname;

        }

     

    }

    [4].mvn clean和mvn install

      mvn clean install后给其它模块引用,达到通用目的。即需要用到部门实体的话,不用每个工程都定义一份,直接引用本模块即可。

     

     

    (3).microservicecloud-provider-dept-8001

      部门微服务提供者Module

     

    [1].创建工程

    [2].配置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 http://maven.apache.org/xsd/maven-4.0.0.xsd">

        <parent>

            <artifactId>microservicecloud</artifactId>

            <groupId>com.hosystem</groupId>

            <version>1.0-SNAPSHOT</version>

        </parent>

        <modelVersion>4.0.0</modelVersion>

     

        <artifactId>microservicecloud-provider-dept-8001</artifactId>

     

        <dependencies>

            <dependency><!-- 引入自己定义的api通用包,可以使用Dept部门Entity -->

                <groupId>com.hosystem</groupId>

                <artifactId>microservicecloud-api</artifactId>

                <version>${project.version}</version>

            </dependency>

            <dependency>

                <groupId>junit</groupId>

                <artifactId>junit</artifactId>

            </dependency>

            <dependency>

                <groupId>mysql</groupId>

                <artifactId>mysql-connector-java</artifactId>

            </dependency>

            <dependency>

                <groupId>com.alibaba</groupId>

                <artifactId>druid</artifactId>

            </dependency>

            <dependency>

                <groupId>ch.qos.logback</groupId>

                <artifactId>logback-core</artifactId>

            </dependency>

            <dependency>

                <groupId>org.mybatis.spring.boot</groupId>

                <artifactId>mybatis-spring-boot-starter</artifactId>

            </dependency>

            <dependency>

                <groupId>org.springframework.boot</groupId>

                <artifactId>spring-boot-starter-jetty</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>

            </dependency>

            <!-- 修改后立即生效,热部署 -->

            <dependency>

                <groupId>org.springframework</groupId>

                <artifactId>springloaded</artifactId>

            </dependency>

            <dependency>

                <groupId>org.springframework.boot</groupId>

                <artifactId>spring-boot-devtools</artifactId>

            </dependency>

        </dependencies>

     

    </project>

    [3].配置applicaiton.yml文件

    server:

      port: 8001

     

    mybatis:

      config-location: classpath:mybatis/mybatis.cfg.xml        # mybatis配置文件所在路径

      type-aliases-package: com.hosytem.springcloud.entities    # 所有Entity别名类所在包

      mapper-locations:

      - classpath:mybatis/mapper/**/*.xml                       # mapper映射文件

     

    #name spring.application.name=microservicecloud-dept  很重要很重要很重要

    spring:

       application:

        name: microservicecloud-dept

       datasource:

        type: com.alibaba.druid.pool.DruidDataSource            # 当前数据源操作类型

        driver-class-name: org.gjt.mm.mysql.Driver              # mysql驱动包

        url: jdbc:mysql://192.168.188.188:3306/cloudDB01              # 数据库名称

        username: root

        password: 123456

        dbcp2:

          min-idle: 5                                           # 数据库连接池的最小维持连接数

          initial-size: 5                                       # 初始化连接数

          max-total: 5                                          # 最大连接数

          max-wait-millis: 200                                  # 等待连接获取的最大超时时间

    [4].配置mybatis.cfg.xml文件

      microservicecloud-provider-dept-8001srcmain esourcesmybatismybatis.cfg.xml

    <?xml version="1.0" encoding="UTF-8" ?>

    <!DOCTYPE configuration

            PUBLIC "-//mybatis.org//DTD Config 3.0//EN"

            "http://mybatis.org/dtd/mybatis-3-config.dtd">

     

    <configuration>

     

        <settings>

            <setting name="cacheEnabled" value="true"<!-- 二级缓存开启 -->

  • 相关阅读:
    韩寒首度回应小三事件:望女友妻子和平相处_陕西频道_凤凰网
    冒泡排序 oj Google 搜索
    on call是什么意思_on call的翻译_音标_读音_用法_例句 必应 Bing 词典
    分享:创业失败后如何找工作
    美国出台高科技人才移民优惠政策_the United States 美国_cnBeta.COM
    分别用数组和链表实现堆栈(C语言版) ahljjun的专栏 博客频道 CSDN.NET
    分享:void及void指针深层次探索
    浅谈基础算法之堆栈(五) 川山甲 博客园
    分享:【原创】Stringification 在二级宏定义中的使用
    System Engineer / Backend Engineer
  • 原文地址:https://www.cnblogs.com/HOsystem/p/14057208.html
Copyright © 2011-2022 走看看