一、开发环境说明
- 开发工具:IntelliJ IDEA 2020.01
- JDK:1.8
- SpringCloud版本:Hoxton.SR10
- SpringBoot版本:2.3.8.RELEASE (注意一定要去SpringCloud的官网查看当前SpringCloud版本与之对应的SpringBoot版本)
二、父工程搭建
- File --> New --> Project
- 选择Maven,并指定JDK版本
- 写入工程名称与坐标
- Finish
- 修改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>
- 删除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
三、搭建子工程
- 父工程项目点击鼠标右键,选择New --> Module
- 选择Maven工程,并选择响应的JDK版本(不推荐直接生成SpringBoot项目),点击Next
- 只需要更改子工程的项目名即可
- 检查项目结构,子工程pom文件、父工程pom文件
- 更改子工程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>
- 新建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 — 主启动 ---- 业务