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.0modelVersion>

 

    <groupId>com.hosystemgroupId>

    <artifactId>microservicecloudartifactId>

    <version>1.0-SNAPSHOTversion>

    <packaging>pompackaging>

 

    <properties>

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

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

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

        <junit.version>4.12junit.version>

        <log4j.version>1.2.17log4j.version>

        <lombok.version>1.16.18lombok.version>

    properties>

 

 

    <dependencyManagement>

        <dependencies>

            <dependency>

                <groupId>org.springframework.cloudgroupId>

                <artifactId>spring-cloud-dependenciesartifactId>

                <version>Dalston.SR1version>

                <type>pomtype>

                <scope>importscope>

            dependency>

            <dependency>

                <groupId>org.springframework.bootgroupId>

                <artifactId>spring-boot-dependenciesartifactId>

                <version>1.5.9.RELEASEversion>

                <type>pomtype>

                <scope>importscope>

            dependency>

            <dependency>

                <groupId>mysqlgroupId>

                <artifactId>mysql-connector-javaartifactId>

                <version>5.0.4version>

            dependency>

            <dependency>

                <groupId>com.alibabagroupId>

                <artifactId>druidartifactId>

                <version>1.0.31version>

            dependency>

            <dependency>

                <groupId>org.mybatis.spring.bootgroupId>

                <artifactId>mybatis-spring-boot-starterartifactId>

                <version>1.3.0version>

            dependency>

            <dependency>

                <groupId>ch.qos.logbackgroupId>

                <artifactId>logback-coreartifactId>

                <version>1.2.3version>

            dependency>

            <dependency>

                <groupId>junitgroupId>

                <artifactId>junitartifactId>

                <version>${junit.version}version>

                <scope>testscope>

            dependency>

            <dependency>

                <groupId>log4jgroupId>

                <artifactId>log4jartifactId>

                <version>${log4j.version}version>

            dependency>

        dependencies>

    dependencyManagement>

 

 

 

project>

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

 

<groupId>com.hosystemgroupId>

<artifactId>microservicecloudartifactId>

<version>1.0-SNAPSHOTversion>

<packaging>pompackaging>

<modules>

    <module>microservicecloud-apimodule>

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>microservicecloudartifactId>

        <groupId>com.hosystemgroupId>

        <version>1.0-SNAPSHOTversion>

    parent>

    <modelVersion>4.0.0modelVersion>

 

    

    <artifactId>microservicecloud-apiartifactId>

 

    

    <dependencies>

        <dependency>

            <groupId>org.projectlombokgroupId>

            <artifactId>lombokartifactId>

        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>microservicecloudartifactId>

        <groupId>com.hosystemgroupId>

        <version>1.0-SNAPSHOTversion>

    parent>

    <modelVersion>4.0.0modelVersion>

 

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

 

    <dependencies>

        <dependency>

            <groupId>com.hosystemgroupId>

            <artifactId>microservicecloud-apiartifactId>

            <version>${project.version}version>

        dependency>

        <dependency>

            <groupId>junitgroupId>

            <artifactId>junitartifactId>

        dependency>

        <dependency>

            <groupId>mysqlgroupId>

            <artifactId>mysql-connector-javaartifactId>

        dependency>

        <dependency>

            <groupId>com.alibabagroupId>

            <artifactId>druidartifactId>

        dependency>

        <dependency>

            <groupId>ch.qos.logbackgroupId>

            <artifactId>logback-coreartifactId>

        dependency>

        <dependency>

            <groupId>org.mybatis.spring.bootgroupId>

            <artifactId>mybatis-spring-boot-starterartifactId>

        dependency>

        <dependency>

            <groupId>org.springframework.bootgroupId>

            <artifactId>spring-boot-starter-jettyartifactId>

        dependency>

        <dependency>

            <groupId>org.springframework.bootgroupId>

            <artifactId>spring-boot-starter-webartifactId>

        dependency>

        <dependency>

            <groupId>org.springframework.bootgroupId>

            <artifactId>spring-boot-starter-testartifactId>

        dependency>

        

        <dependency>

            <groupId>org.springframeworkgroupId>

            <artifactId>springloadedartifactId>

        dependency>

        <dependency>

            <groupId>org.springframework.bootgroupId>

            <artifactId>spring-boot-devtoolsartifactId>

        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-8001\src\main\resources\mybatis\mybatis.cfg.xml

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

 configuration

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

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

 

<configuration>

 

    <settings>

        <setting name="cacheEnabled" value="true"