一、开发环境说明

  1. 开发工具:IntelliJ IDEA 2020.01
  2. JDK:1.8
  3. SpringCloud版本:Hoxton.SR10
  4. SpringBoot版本:2.3.8.RELEASE (注意一定要去SpringCloud的官网查看当前SpringCloud版本与之对应的SpringBoot版本)

二、父工程搭建

  1. File --> New --> Project
  2. gradle springcloud父子_maven

  3. 选择Maven,并指定JDK版本
  4. gradle springcloud父子_java_02

  5. 写入工程名称与坐标
  6. gradle springcloud父子_mysql_03

  7. Finish
  8. gradle springcloud父子_mysql_04

  9. 修改pom文件
    ① 加入<packaging>pom</packaging> ② 加入各种依赖(我加入了SpringBoot、SpringCloud、SpringCloud Alibaba、mysql、druid、mybatisplus、mybatis Plus、junit、Lombok、日志)
    作为父项目需要这样设置,还可以添加一些属性(如编译时的JDK版本),子项目可以用,全局设置,避免冲突
<?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.springcloud.test.cn</groupId>
    <artifactId>springcloudtest</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>pom</packaging>

      <properties>
        <!-- 指定编码格式 -->
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <!-- 指定编译时的jdk版本 -->
        <maven.compiler.target>1.8</maven.compiler.target>
        <maven.compiler.source>1.8</maven.compiler.source>
        <!-- 指定各jar包版本 -->
        <mysql.version>8.0.22</mysql.version>
        <druid.version>1.1.10</druid.version>
        <mybatis>2.1.3</mybatis>
        <mybatis-plus>3.4.2</mybatis-plus>
        <junit.version>4.13.1</junit.version>
        <lombok.version>1.18.12</lombok.version>
    </properties>

    <!-- dependencys:即使在子项目中不写该依赖项,那么子项目仍然会从父项目中继承该依赖项(全部继承) -->
    <!-- dependencyManagement:子项目继承之后,提供作用:锁定版本  子modlue不用再写group和version;不在子项目中声明依赖,是不会从父项目中继承下来的,只有在子项目中写了该依赖项,并且没有指定具体版本,才会从父项目中继承该项,并且version和scope都读取自父pom -->
    <!-- 如果子项目中指定了版本号,那么会使用子项目中指定的jar版本 -->
    <dependencyManagement>
        <dependencies>

            <dependency>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-project-info-reports-plugin</artifactId>
                <version>3.0.0</version>
            </dependency>

            <!--spring boot-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>2.3.8.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <!--spring cloud Hoxton.SR10-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Hoxton.SR10</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <!--spring cloud 阿里巴巴-->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.2.5.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <!-- mysql -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>${mysql.version}</version>
                <scope>runtime</scope>
            </dependency>

            <!-- druid -->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>${druid.version}</version>
            </dependency>

            <!-- mybatis -->
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>${mybatis}</version>
            </dependency>

            <!-- mybatisPlus -->
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>${mybatis-plus}</version>
            </dependency>

            <!-- junit -->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>${junit.version}</version>
            </dependency>

            <!-- SLF4J与LogBack整合,移除其他系统默认的日志框架,与SpringBoot使用同一种日志框架 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-logging</artifactId>
            </dependency>

            <!-- lombok -->
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>${lombok.version}</version>
            </dependency>

        </dependencies>
    </dependencyManagement>
	<!-- 配置热部署 -->
    <build>
        <!-- <finalName>工程名字<finalName/> --> <!-- 可省略 -->
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <fork>true</fork>
                    <addResources>true</addResources>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
  1. 删除src文件

    多说一句:如果想要IDEA清爽简洁,可以把多余的不需要的文件隐藏掉,比如上图中的 .idea和.iml文件

    File --> Setting --> Editor --> File Types --> lognore files and folders
*.hprof;*.pyc;*.pyo;*.rbc;*.yarb;*~;.DS_Store;.git;.hg;.svn;CVS;__pycache__;_svn;vssver.scc;vssver2.scc;*.idea;*.iml

三、搭建子工程

  1. 父工程项目点击鼠标右键,选择New --> Module
  2. 选择Maven工程,并选择响应的JDK版本(不推荐直接生成SpringBoot项目),点击Next
  3. 只需要更改子工程的项目名即可
  4. 检查项目结构,子工程pom文件、父工程pom文件

  5. 更改子工程pom文件,增加依赖
    如果子工程写了版本号,就使用子工程的版本号,如果没写版本,就找父工程中规定的版本号 <version>版本号</version>
<?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>springcloudtest</artifactId>
    <groupId>com.springcloud.test.cn</groupId>
    <version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

<artifactId>springcloud-private-logging8081</artifactId>

<dependencies>

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

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

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <!--热部署-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>

        <!--jdbc-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>

        <!-- mybatis -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
        </dependency>

        <!-- mybatisPlus -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
        </dependency>

        <!-- druid -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <!--子工程写了版本号,就使用子工程的版本号,如果没写版本,就找父工程中规定的版本号-->
            <version>1.1.20</version>
        </dependency>

        <!-- mysql -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

        <!-- lombak -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

    </dependencies>

</project>
  1. 新建application.yml文件或application.properties文件、SpringBoot主程序启动类、使用idea插件easycode一键生成controller、dao、entity、service

LoggingApplication

package com.cn.springcloud;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * @ProjectName: springcloudtest
 * @Package: com.cn.springcloud
 * @ClassName: LoggingApplication
 * @Author: huiqb
 * @Description:
 * @Date: 2021/2/24 11:27
 * @Version: 1.0
 */
// SpringBoot启动注解
@SpringBootApplication
// SpringBoot自动扫描Mapper映射文件
@MapperScan("com.cn.springcloud.dao")
public class LoggingApplication {

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

}

application.yml

# 开发环境
spring:
  profiles:
    active: dev
# 测试环境
#spring:
#  profiles:
#    active: beta
# 生产环境
#spring:
#  profiles:
#    active: prod

application-dev.yml

# 开发环境
# 配置系统服务
server:
  # 项目访问端口号
  port: 8081
# 配置SpringBoot日志
logging:
  file:
    # 在当前项目中生成指定目录  也可以使用logging.file完整路径 G:/springboot.log
    path: logs
  pattern:
    # 日志输出格式:
    # %d表示日期时间,
    # %thread表示线程名,
    # %-5level:级别从左显示5个字符宽度
    # %logger{50} 表示logger名字最长50个字符,否则按照句点分割。
    # %msg:日志消息,
    # %n是换行符
    # 在控制台输出的日志的格式   properties文件不需要用单引号括起来
    console: '%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n'
    # 指定输出文件中日志输出的格式  properties文件不需要用单引号括起来
    file: '%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n'
# 配置数据库连接服务
spring:
  # 配置这个是可以让游览器直接访问到html
  resources:
    static-locations: classpath:/static/
  # 配置Mvc视图配置
  mvc:
    servlet:
      # 项目访问上下文
      path: /logging
  #配置数据库连接
  datasource:
    #使用的是阿里的druid数据库连接池
    druid:
      # 数据库连接基本信息
      username: root
      password: passw0rd
      url: jdbc:mysql://123.56.9.39:3306/springcloudtest?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
      driver-class-name: com.mysql.jdbc.Driver
      # 初始化连接的数量
      initial-size: 5
      # 数据库连接的最大数量
      max-active: 20
      # 最小连接数
      min-idle: 5
      # 获取连接的最大等待时间
      max-wait: 50000
      # 是否缓存预编译语句,对支持游标的数据库性能提升巨大
      pool-prepared-statements: true
      # 最大缓存预编译语句的数量大小,当大于 0 时,pool-prepared-statements 自动触发修改为 true
      max-pool-prepared-statement-per-connection-size: 20
      # 检测连接是否有效的 SQL 语句,一般为查询语句
      validation-query: select 1 from dual
      # 检测连接是否有效语句执行超时
      validation-query-timeout: 50000
      # 获取连接时检测连接是否有效
      test-on-borrow: true
      # 返回连接时检测连接是否有效
      test-on-return: true
      # 对空闲连接进行检测,如果空闲时间大于 time-between-eviction-runs-millis 检测连接是否有效
      test-while-idle: true
      # 检测空闲连接是否有效的时间间隔
      time-between-eviction-runs-millis: 50000
      # 连接的最小生存时间
      min-evictable-idle-time-millis: 50000
      # 是否支持异步关闭连接
      async-close-connection-enable: true
      # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
      filters: config,stat,wall
      # 通过 connectProperties 属性来打开 mergeSql(sql参数化合并) 功能;慢 sql 记录以及密码加密实现
      connection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
      # 合并多个DruidDataSource的监控数据
      use-global-data-source-stat: true
      # 设置访问druid监控页的账号和密码,默认没有
      stat-view-servlet:
        # 用户名及密码
        login-username: admin
        login-password: passw0rd
        # 白名单 允许那个IP访问  不填则默认允许所有请求访问
        #allow:
        # 黑名单 拒绝那个IP访问  不填则默认允许所有请求访问 当白名单和黑名单重复时,黑名单优先级更高
        #deny:
        # druid监控页面访问地址   注意下exclusions配置别被拦截了
        url-pattern: /my/druid/*
        # 是否启用druid监听后台 默认true
        enabled: true
        # druid后台重置统计数据按钮功能是否启用
        reset-enable: true
      web-stat-filter:
        # 添加过滤规则 /*拦截全部
        url-pattern: /*
        # 忽略过滤格式
        exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/my/druid/*"
        # 是否启动过滤 默认true
        enabled: true
mybatis-plus:
  # 实体类扫描地址
  type-aliases-package: com.cn.springcloud.entity
  # xml扫描,多个目录用逗号或者分号分隔(告诉 mapper接口 所对应的 XML 文件位置)
  mapper-locations: classpath:mapper/*.xml
  configuration:
    # 是否开启自动驼峰命名规则映射:从数据库列名到Java属性驼峰命名的类似映射
    map-underscore-to-camel-case: true
    # 如果查询结果中包含空值的列,则 MyBatis 在映射的时候,不会映射这个字段
    call-setters-on-nulls: true
    # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  global-config:
    db-config:
      db-type: mysql

子工程搭建流程:建module — 改pom — 写yml — 主启动 ---- 业务