# 基础配置

# 概述

初次接触一个新项目时,会给人一种一筹莫展的感觉,尤其是一个全新的未知的项目,首页我们拿到一个新项目(或新框架),首页我们先看下项目框架的具体架构和设计思路,在上一章节《目录结构》中我们做了详细的介绍,这里我们不做扩展,本章节我们重点介绍下框架的基础配置;

# 项目依赖

首页我们了解下我们的框架具体引入了哪些依赖包,然后再去仔细的阅读框架配置文件时可以更好的理解,下面我们把框架所用到的常规依赖包罗列一下,希望能帮助开发者更好的了解我们的框架:

  • mybatis-plus 起始依赖
<!--mybatis-plus 起始依赖 -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.2.0</version>
</dependency>
1
2
3
4
5
6
  • WEB 模块依赖
 <!-- WEB 模块依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
1
2
3
4
5
  • Redis 起始依赖
<!-- Redis 起始依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis-reactive</artifactId>
</dependency>
1
2
3
4
5
  • configuration传统配置读取依赖
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>
1
2
3
4
5
  • 引入阿里数据库连接池
<!-- 引入阿里数据库连接池 -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.1.10</version>
</dependency>
1
2
3
4
5
6
  • MySql驱动依赖
<!-- MySql驱动 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>
1
2
3
4
5
6
  • mybatis-plus代码自动生成依赖
<!--mybatis-plus 代码自动生成 -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>3.2.0</version>
</dependency>
1
2
3
4
5
6
  • lombok依赖
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>
1
2
3
4
5
  • 阿里fastjson依赖
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.62</version>
</dependency>
1
2
3
4
5
  • commons-lang3依赖
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.9</version>
</dependency>
1
2
3
4
5
  • commons-io依赖
<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.5</version>
</dependency>
1
2
3
4
5
  • json-simple依赖
<dependency>
    <groupId>com.googlecode.json-simple</groupId>
    <artifactId>json-simple</artifactId>
    <version>1.1</version>
</dependency>
1
2
3
4
5
  • AOP依赖
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-aop</artifactId>
</dependency>
1
2
3
4
  • UserAgent依赖
<dependency>
    <groupId>eu.bitwalker</groupId>
    <artifactId>UserAgentUtils</artifactId>
    <version>1.20</version>
</dependency>
1
2
3
4
5
  • Excel操作依赖
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>easyexcel</artifactId>
    <version>1.1.2-beat1</version>
</dependency>
1
2
3
4
5
  • 文件上传依赖
<!-- 文件上传 -->
<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.3.1</version>
</dependency>
1
2
3
4
5
6
  • 阿里短信SDK
<!-- 阿里短信SDK -->
<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-core</artifactId>
    <version>4.1.0</version>
</dependency>
1
2
3
4
5
6
  • 邮件发送起始依赖
<!-- 邮件发送起始依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
</dependency>
1
2
3
4
5
  • thymeleaf 模板引擎依赖
<!-- thymeleaf 模板引擎依赖(如:模板邮件) -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
1
2
3
4
5
  • 极光推送依赖
<!-- 极光推送 -->
<dependency>
    <groupId>cn.jpush.api</groupId>
    <artifactId>jpush-client</artifactId>
    <version>3.3.10</version>
</dependency>
1
2
3
4
5
6
  • 文件压缩、解压缩
<!-- 文件压缩、解压缩 -->
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-compress</artifactId>
    <version>1.8.1</version>
</dependency>
1
2
3
4
5
6
  • JWT依赖
<!-- JWT依赖 -->
<dependency>
    <groupId>io.jsonwebtoken</groupId>
    <artifactId>jjwt</artifactId>
    <version>0.9.1</version>
</dependency>
<dependency>
    <groupId>com.auth0</groupId>
    <artifactId>java-jwt</artifactId>
    <version>3.4.0</version>
</dependency>
1
2
3
4
5
6
7
8
9
10
11
  • 二维码生成依赖
<!-- 二维码生成依赖 -->
<dependency>
    <groupId>com.google.zxing</groupId>
    <artifactId>core</artifactId>
    <version>3.2.0</version>
</dependency>
<dependency>
    <groupId>com.google.zxing</groupId>
    <artifactId>javase</artifactId>
    <version>3.2.0</version>
</dependency>
1
2
3
4
5
6
7
8
9
10
11
  • Shiro相关依赖
<!-- Shiro 核心依赖 -->
<dependency>
    <groupId>org.apache.shiro</groupId>
    <artifactId>shiro-spring</artifactId>
    <version>1.4.0</version>
</dependency>
<!-- Shiro-redis插件 -->
<dependency>
    <groupId>org.crazycake</groupId>
    <artifactId>shiro-redis</artifactId>
    <version>3.1.0</version>
</dependency>
<!-- thymeleaf模板引擎和shiro框架的整合 -->
<dependency>
    <groupId>com.github.theborakompanioni</groupId>
    <artifactId>thymeleaf-extras-shiro</artifactId>
    <version>2.0.0</version>
</dependency>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
  • Thymeleaf模板及布局依赖
<!--thymeleaf 模板依赖-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!--thymeleaf 布局依赖-->
<dependency>
    <groupId>nz.net.ultraq.thymeleaf</groupId>
    <artifactId>thymeleaf-layout-dialect</artifactId>
</dependency>
1
2
3
4
5
6
7
8
9
10

备注:综上所述框架使用的主要依赖基本上都一一列出,如有对依赖不太熟悉的小伙伴请自行补课。

# 公共配置

上面我们把框架的依赖详细的呈现给大家,下面我们重点介绍下框架的参数配置相关的内容,框架默认读取application.yml配置文件,鉴于项目场景的不同,在要求不严格的情况下,我们会扩展开发环境(dev)测试环境(test)预发布环境(pre)生产环境(pro),每种不同的环境之前是如何配置或选择的,下面我们会做详细的介绍;

  • 公共配置 一般项目或者框架我们都会有公共配置和个性化配置,顾名思义,公共配置就是都会使用到的常规配置,而个性化配置则是不同的场景或者不同的阶段的配置,公共配置application.yml如下:
spring:
  profiles:
    # 指定执行环境
    active: dev #@package.environment@

  # 服务模块
  devtools:
    restart:
      # 热部署开关
      enabled: true

# MyBatis
mybatis-plus:
  mapper-locations: classpath*:mapper/*Mapper.xml
  # 实体扫描,多个package用逗号或者分号分隔
  type-aliases-package: com.javaweb.**.mapper
  configuration:
    # 开启驼峰命名法
    map-underscore-to-camel-case: true
    use-generated-keys: true
    # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

# Shiro相关配置
shiro:
  user:
    # 登录地址
    loginUrl: /login
    # 权限认证失败地址
    unauthorizedUrl: /unauth
    # 首页地址
    indexUrl: /index
    # 验证码开关
    captchaEnabled: true
    # 验证码类型 math 数组计算 char 字符
    captchaType: math
  cookie:
    # 设置Cookie的域名 默认空,即当前访问的域名
    domain:
    # 设置cookie的有效访问路径
    path: /
    # 设置HttpOnly属性
    httpOnly: true
    # 设置Cookie的过期时间,天为单位
    maxAge: 30
  session:
    # Session超时时间,-1代表永不过期(默认30分钟)
    expireTime: 30
    # 同步session到数据库的周期(默认1分钟)
    dbSyncPeriod: 1
    # 相隔多久检查一次session的有效性,默认就是10分钟
    validationInterval: 10
    # 同一个用户最大会话数,比如2的意思是同一个账号允许最多同时两个人登录(默认-1不限制)
    maxSession: -1
    # 踢出之前登录的/之后登录的用户,默认踢出之前登录的用户
    kickoutAfter: false

# 系统信息
system:
  # 系统名称
  fullName: JavaWeb后台开发框架
  # 系统简称
  nickName: JavaWeb专业版v1.0.5
  # 系统版本号
  version: v1.0.5

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66

参数说明:

  1. spring.profiles.active:这个参数值表示当前调用的环境,dev表示调用的文件是application-dev.yml以此类推,上面对各环境有具体的描述;
  2. mybatis-plus:这个是MybatisPlus的相关参数配置,具体参数表示什么意思,可以自行查阅资料;
  3. shiro:这个是权限安全认证shiro的相关参数配置,每组参数都有特定的含义;
  4. system:这个是系统的基础配置,这里定义了系统的全称简称版本号等常规信息;

# 环境变量

上述我们解读了公共配置文件application.yml的内容,下面我们举例开发环境(dev)的配置文件来给大家详细的说明参数配置信息,配置文件的主要内容如下:

# 端口配置
server:
  port: 9010
#  servlet:
#    # 项目的前缀名
#    context-path: /javaweb
  IMAGE_URL: http://localhost:9010

spring:
  # 配置数据源
  datasource:
    # 使用阿里的Druid连接池
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    # 填写你数据库的url、登录名、密码和数据库名
    url: jdbc:mysql://127.0.0.1:3306/javaweb?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2b8&useSSL=true&tinyInt1isBit=false
    username: root
    password:
    druid:
      # 连接池的配置信息
      # 初始连接数
      initialSize: 5
      # 最小连接池数量
      minIdle: 5
      # 最大连接池数量
      maxActive: 20
      # 配置获取连接等待超时的时间
      maxWait: 60000
      # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
      timeBetweenEvictionRunsMillis: 60000
      # 配置一个连接在池中最小生存的时间,单位是毫秒
      minEvictableIdleTimeMillis: 300000
      # 配置一个连接在池中最大生存的时间,单位是毫秒
      maxEvictableIdleTimeMillis: 900000
      # 配置检测连接是否有效
      validationQuery: SELECT 1 FROM DUAL
      testWhileIdle: true
      testOnBorrow: false
      testOnReturn: false
      # 打开PSCache,并且指定每个连接上PSCache的大小
      poolPreparedStatements: true
      maxPoolPreparedStatementPerConnectionSize: 20
      # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
      filters: stat,wall,log4j
      # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
      connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
      # 配置DruidStatFilter
      webStatFilter:
        enabled: true
        url-pattern: "/*"
        exclusions: "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*"
      # 配置DruidStatViewServlet
      statViewServlet:
        url-pattern: "/druid/*"
        # IP白名单(没有配置或者为空,则允许所有访问)
        allow: 127.0.0.1,192.168.163.1
        # IP黑名单 (存在共同时,deny优先于allow)
        deny: 192.168.1.73
        #  禁用HTML页面上的“Reset All”功能
        reset-enable: false
        # 登录名
        login-username: admin
        # 登录密码
        login-password: 123456

  # 自定义国际化配置
  messages:
    # 国际化资源文件路径
    basename: i18n/messages
    encoding: UTF-8

  # Redis数据源
  redis:
    # 缓存库默认索引0
    database: 0
    # Redis服务器地址
    host: 127.0.0.1
    # Redis服务器连接端口
    port: 6379
    # Redis服务器连接密码(默认为空)
    password:
    # 连接超时时间(毫秒)
    timeout: 6000
    # 默认的数据过期时间,主要用于shiro权限管理
    expire: 2592000
    jedis:
      pool:
        max-active: 1000  # 连接池最大连接数(使用负值表示没有限制)
        max-wait: -1      # 连接池最大阻塞等待时间(使用负值表示没有限制)
        max-idle: 10      # 连接池中的最大空闲连接
        min-idle: 1       # 连接池中的最小空闲连接

  servlet:
    multipart:
      # 过滤springmvc的文件上传
      enabled: false
      # 单个文件最大值
      max-file-size: 50MB
      # 上传文件总的最大值
      max-request-size: 100MB

  #邮件配置
  mail:
    # 设置邮箱主机
    host: smtp.qq.com
    # 开启邮箱POP3/SMTP服务,获取客户端授权码(注意并不是邮箱密码,而是授权码)
    password: bqsjzhmkjpfpjdaf
    # 邮箱的用户名
    username: 1175401194@qq.com
    properties:
      mail:
        smtp:
          # 设置是否需要认证,如果为true,那么用户名和密码就必须的。如果设置false,可以不设置用户名和密码,当然也得看你的对接的平台是否支持无密码进行访问的。
          auth: true
          starttls:
            # STARTTLS[1]  是对纯文本通信协议的扩展。它提供一种方式将纯文本连接升级为加密连接(TLS或SSL),而不是另外使用一个端口作加密通信。
            enable: true
            require: true

  alisms:
    accessKeyId:
    accessKeySecret:
    regionId: cn-hangzhou
    signName: 大学圈
    templateCode:

  thymeleaf:
    # 默认true,开发是设置false,上线是设置为true以便提高性能
    # 开发时关闭缓存,不然没法看到实时页面
    cache: false
    enabled: true  #开启thymeleaf视图解析
    encoding: UTF-8
    #模板的模式,支持 HTML, XML TEXT JAVASCRIPT
    #严格的HTML语法模式
    mode: HTML
    # 指定模板所在的目录
    prefix: classpath:/templates/
    #后缀名
    suffix: .html
#    # 检查模板路径是否存在
#    check-template-location: true
    servlet:
      content-type: text/html
  #    enabled: true
  #    check-template: false

  jms:
    # 默认情况下activemq提供的是queue模式,若要使用topic模式需要配置下面配置
    pub-sub-domain: false

  # activemq消息队列
  activemq:
    #队列地址
    broker-url: tcp://47.99.90.120:61616
    #是否是内存模式(内置MQ,true是 false否)
    in-memory: false
    # 等待消息发送响应的时间。设置为0等待永远
    send-timeout: 0
    #账户
    user: 'admin'
    #密码
    password: '123456'

  # 配置rabbitMq 服务器
  rabbitmq:
    host: 47.99.90.120
    port: 5672
    username: guest
    password: guest
    #虚拟host 可以不设置,使用server默认host
    virtual-host: /
    #消息确认配置项
    #确认消息已发送到交换机(Exchange)
    publisher-confirms: true
    #确认消息已发送到队列(Queue)
    publisher-returns: true
    listener:
      simple:
        #acknowledge-mode: manual #设置确认模式手工确认
        concurrency: 1 #消费者最小数量
        max-concurrency: 10 # 消费者最大数量
        prefetch: 5 # 单次可拉取消息数量
    cache:
      connection:
        # 缓存连接模式,默认一个连接,多个channel
        mode: channel
#         多个连接,多个channel
#        mode: connection

file:
  #上传的服务器上的映射文件夹
  accessPath: /uploads/
  #静态资源对外暴露的访问路径
  staticAccessPath: /**
  #静态资源实际存储路径
  uploadFolder: E:\JavaWeb\JavaWeb\uploads\

# Shiro
shiro:
  cipher-key: f/SX5TIve5WWzT4aQlABJA==
  cookie-name: shiro-cookie
  user:
    # 登录地址
    loginUrl: /login
    # 权限认证失败地址
    unauthorizedUrl: /unauth
    # 首页地址
    indexUrl: /index
    # 验证码开关
    captchaEnabled: true
    # 验证码类型 math 数组计算 char 字符
    captchaType: math
    cookie:
      # 设置Cookie的域名 默认空,即当前访问的域名
      domain:
      # 设置cookie的有效访问路径
      path: /
      # 设置HttpOnly属性
      httpOnly: true
      # 设置Cookie的过期时间,天为单位
      maxAge: 30
    session:
      # Session超时时间(默认30分钟)
      expireTime: 300
      # 同步session到数据库的周期(默认1分钟)
      dbSyncPeriod: 1
      # 相隔多久检查一次session的有效性,默认就是10分钟
      validationInterval: 10

# 代码生成
generate:
  # 作者
  author: 鲲鹏
  # 默认生成包路径 system 需改成自己的模块名称 如 system monitor tool
  packageName: com.javaweb.admin
  # 模块名
  moduleName: javaweb-admin
  # 自动去除表前缀,默认是true
  autoRemovePre: true
  # 表前缀(生成类名不会包含表前缀,多个用逗号分隔)
  tablePrefix: pms_
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241

参数说明:

  1. spring.datasource:数据源配置参数,这里主要配置了MYSQL数据库连接,账号和密码以及相关优化参数设置,每个参数的具体含义自行查阅资料;
  2. messages:自定义国际化的参数,其中basename国际化资源文件路径,encoding标识编码;
  3. redis:此参数是Redis缓存配置参数,详细了配置了数据库HOST端口密码连接超时过期时间等一系列常规参数;
  4. mail:邮件配置类,定义了HOST用户名密码等常规信息;
  5. alisms:框架目前采用的是阿里云短信,此处的配置也是依据阿里相关配置方案;
  6. thymeleaf:模板引擎配置,指定了模板所在目录后缀名语法模式等等;
  7. file:文件上传配置,这里配置了文件的上传目录映射文件夹对外暴露的访问路径等等,相关配置文件在核心模块common,文件名为WebMvcConfig中;
  8. generate:代码生成器相关配置,这里主要定义了作者(author)包路径(packageName)模块名(moduleName)是否自动去除前缀(autoRemovePre)表前缀(tablePrefix);

总结,不同的环境配置文件参数有些个性化差异,不同的环境主配置文件所引用的环境变量配置文件也是不同的,比如生成环境时调用的配置文件即为application-pro.yml;