文章目录

  • 1.格式
  • 2. 执行顺序
  • 3. 内容
  • 3.1. spring配置
  • 3.2. 数据源配置
  • 3.3. mybatis扫描配置
  • 3.4. 开发环境配置
  • 3.5. 热部署
  • 3.6. 引入别的配置文件
  • 3.7. pageHelper分页插件
  • 3.8. shiro配置
  • 3.9. xss
  • 3.10. 代码生成


1.格式

  • .properties: 通过.来连接,最后用"="来赋值,结构上,没有分层的感觉,但比较直接
# 数据库配置
spring.datasource.type = com.alibaba.druid.pool.DruidDataSource
spring.datasource.driverClassName= com.mysql.jdbc.Driver
spring.datasorce.url=jdbc:mysql://localhost:3306/spring-boot-frame?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=root

#端口配置
server.port=8081
  • .yml: 每一级用换行来进行分层,层级感比较强,可读性强,最值得注意的最后key赋值的":"后需要留一个空格,不然没办法赋值,在启动项目的时候会报错
# 数据源配置
spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/spring-boot-frame?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
    username: root
    password: root

spring boot指定配置文件目录 spring boot 配置文件_加载

2. 执行顺序

  • 在两种文件同时存在的情况下,默认会先加载yml文件,然后加载properties文件进行覆盖,个人习惯使用yml文件作为配置文件。
  • 不同的目录层级也会有加载顺序,默认是 1 > 2 > 3 > 4(个人认为是先加载了4然后被3覆盖,以此类推,就像yml先被加载然后被覆盖,没有实验过,也没找到相应的文章)通常项目会放在4位置,

3. 内容

3.1. spring配置
  • 这里注意一下,在3.1和3.4中也有spring,所以必须是在同一个spring下的,即他们应该同一个层级下,如果像我这样配置的全部到一个yml文件中就会报错
# Spring配置
spring:
  # 模板引擎
  thymeleaf:
    mode: HTML
    encoding: utf-8
    # 禁用缓存
    cache: false
  # 资源信息
  messages:
    # 国际化资源文件路径
    basename: static/i18n/messages
  jackson:
    time-zone: GMT+8
    date-format: yyyy-MM-dd HH:mm:ss
  profiles:
    active: druid
  # 文件上传
  servlet:
     multipart:
       # 单个文件大小
       max-file-size:  10MB
       # 设置总上传的文件大小
       max-request-size:  20MB
  # 服务模块
  devtools:
    restart:
      # 热部署开关
      enabled: true

3.2. 数据源配置
# 数据源配置
spring:
    datasource:
        type: com.alibaba.druid.pool.DruidDataSource
        driverClassName: com.mysql.cj.jdbc.Driver
        druid:
            # 主库数据源
            master:
                url: jdbc:mysql://119.23.138.111:3306/momapp?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
                username: root
                password: ichen123
            # 从库数据源
            slave:
                # 从数据源开关/默认关闭
                enabled: false
                url: 
                username: 
                password: 
            # 初始连接数
            initialSize: 5
            # 最小连接池数量
            minIdle: 10
            # 最大连接池数量
            maxActive: 20
            # 配置获取连接等待超时的时间
            maxWait: 60000
            # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
            timeBetweenEvictionRunsMillis: 60000
            # 配置一个连接在池中最小生存的时间,单位是毫秒
            minEvictableIdleTimeMillis: 300000
            # 配置一个连接在池中最大生存的时间,单位是毫秒
            maxEvictableIdleTimeMillis: 900000
            # 配置检测连接是否有效
            validationQuery: SELECT 1 FROM DUAL
            testWhileIdle: true
            testOnBorrow: false
            testOnReturn: false
            webStatFilter: 
                enabled: true
            statViewServlet:
                enabled: true
                # 设置白名单,不填则允许所有访问
                allow:
                url-pattern: /druid/*
                # 控制台管理用户名和密码
                login-username: 
                login-password: 
            filter:
                stat:
                    enabled: true
                    # 慢SQL记录
                    log-slow-sql: true
                    slow-sql-millis: 1000
                    merge-sql: true
                wall:
                    config:
                        multi-statement-allow: true

3.3. mybatis扫描配置
# MyBatis
mybatis:
    # 搜索指定包别名
    typeAliasesPackage: com.ichen.**.entity
    # 配置mapper的扫描,找到所有的mapper.xml映射文件
    mapperLocations: classpath:mybatis/**/*Mapper.xml
    # 加载全局的配置文件
    configLocation: classpath:mybatis/mybatis-config.xml
  • 这里的typeAliasesPackage别名配置是为了在xml中的resuletType可以省略前面的路径
<select id="getUsers" resultType="com.ichen.frame.entity.User">
<!-- 如果配置了上面的别名就不需要写全路径 --> 
<select id="getUsers" resultType="User">
  • mapperLocations这里不配置的话,就会默认去mapper接口类的所在的包中去找

3.4. 开发环境配置
server:
  # 服务器的HTTP端口,默认为80
  port: 8088
  servlet:
    # 应用的访问路径
    context-path: /
  tomcat:
    # tomcat的URI编码
    uri-encoding: UTF-8
    # tomcat最大线程数,默认为200
    max-threads: 800
    # Tomcat启动初始化的线程数,默认值25
    min-spare-threads: 30

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

3.6. 引入别的配置文件
# application-druid.yml的前缀一定要和主在配置文件application.yml的名字一致
sring:
  profiles:
	# 这里如果是多个文件可以用逗号隔开
    include: druid

又或者是

# application-druid.yml的前缀一定要和主在配置文件application.yml的名字一致
sring:
  profiles:
	# 这里如果是多个文件可以用逗号隔开
    active: druid
  • 这两者是有一定的区别,这里我引用别人的文章,写的很清楚,链接:点我,同时做个copy,以防文章消失
application.properties文件内容
spring.profiles.active=test4
pring.profiles.include=test3,test5
version=1
name=Tom
appliction-tes2.properties文件内容
pring.profiles.include=test3,test4
version=2
appliction-test3.propertiest文件内容
version=3
name=Allen
appliction-test4.propertiest文件内容
name=Jim
application-test5.propertiest文件内容
version=5
name=Ifty
总结
无参启动例如 
java -jar example.jar 
先加载application.properties文件
最终version=5,name=Jim

有参启动例如
java -jar example.jar --spring.profiles.active=test2
先加载application-test2.properties文件,再加载application.properties文件
最终version=2,name=Ifty

 总结:
多个配置文件中有同一个值,以下情况获取值的效果:
1.启动命令不带--spring.profiles.active参数以application.properties首先启动
按顺序所有文件第一个配置的spring.profiles.active属性中指定的最后一个文件中含有该属性的值为准
如果所有文件都没有spring.profiles.active,那么以pring.profiles.include配置的最后一个属性文件中的值为准
2.启动命令带--spring.profiles.active参数以参数指定的属性文件首先启动
此情况,已命令指定的配置文件中的值为准,其他文件中再配置spring.profiles.active也不会生效,如果不存在值,那么会以pring.profiles.include指定的最后一个文件中的值为准

简要说
启动命令spring.profiles.active指定文件中的值 > 文件中spring.profiles.active指定的文件列表中最后一次出现的值 > 文件中spring.profiles.include指定的文件列表中最后一次出现的值

(注意:无论是否配置启动命令参数指定文件,最后都会加载application.properties,它里边配置的信息也很关键)
  • 那为什么有active使用呢,因为项目在不同环境下的配置会所有不同,比如开发环境,沙箱环境,正式环境等的数据库,redis,端口不同,就可以这样配置。
  • 使用的话,我们可以将3.2,3.3,3.4的配置放在相应的yml文件中,在启动的时候指定使用什么配置文件,就可以达到多配置的目的。

3.7. pageHelper分页插件
# PageHelper分页插件
pagehelper: 
  helperDialect: mysql
  reasonable: true
  supportMethodsArguments: true
  params: count=countSql

3.8. shiro配置
# Shiro
shiro:
  user:
    # 登录地址
    loginUrl: /login
    # 权限认证失败地址
    unauthorizedUrl: /unauth
    # 首页地址
    indexUrl: /index
    # 验证码开关
    captchaEnabled: false
    # 验证码类型 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

3.9. xss
# 
xss: 
  # 过滤开关
  enabled: true
  # 排除链接(多个用逗号分隔)
  excludes: /system/notice/*
  # 匹配链接
  urlPatterns: /system/*,/monitor/*,/tool/*

3.10. 代码生成
# 代码生成
gen: 
  # 作者
  author: ichen
  # 默认生成包路径 system 需改成自己的模块名称 如 system monitor tool
  packageName: com.ichen.project.system
  # 自动去除表前缀,默认是true
  autoRemovePre: true
  # 表前缀(生成类名不会包含表前缀,多个用逗号分隔)
  tablePrefix: i_