Spring Boot 主配置文件参数介绍


placeholder image
admin 发布于:2022-05-09 10:05:49
阅读:loading

在Spring Boot版本项目中核心配置文件为application(在cloud中还另有bootstrap),该文件支持properties和yaml类型,yaml又可以简写为yml格式,在本站新版博客编码初期,本着对properties文件非常熟悉的态度,毫不犹豫的选择了yml格式,一路走过来也没有遇到什么特别的问题,只是在一个项目中出现多个application.yml文件时,IDEA对文件中的参数配置丢失了提示的功能,未知在application.properties类型的配置文件是否存在类似的情况。由于主要是围绕本站系统实现的功能点展开,本文的主要目的是介绍本站项目的application.yml配置参数范围解释,跳过yml文件格式的语法以及具体的参数属性,也无视该文件可以放置的多个位置等。

本站所有的参数在使用时,均采用了自定义路径的方式,未直接使用某些组件默认的参数配置文件路径,将所涉及到的组件的配置文件均放置在resources/config目录下。

logback

Spring Boot默认集成了logback日志组件(logback与log4j是同一个作者),同时Spring Boot支持logback-spring.xml配置文件,以spring结尾的表示该文件支持增强的一些特殊的标签和参数来源的获取等支持,建议还是使用增强的配置文件。本次也是使用了自定义的logback的配置文件路径,具体后文专门分析。

banner

Spring Boot默认的banner为Spring的字符画 + Spring Boot版本号,允许用户自定义banner,同时允许banner为图片和txt文件,至于图片需要特殊图片,它会将图片中的字符特殊展示(没有实践,感觉华而不实),倒是使用了自定义banner.txt来实现自定义的输出,并且自定义文件的路径,运行结果参考如下:

image.png

ehcache

ehcache是进程内的一款缓存插件,对个人而言选择使用它主要是熟悉使用和部署及运维成本较小,毕竟考虑部署在有限的服务器资源中运维成本越低越好。本次使用也是自定义ehcache.xml的配置文件路径。

thymeleaf

thymeleaf是Spring Boot官方推荐使用的模板引擎,此处的配置需要格外注意prefix参数,在开发阶段的直接运行与部署测试生产阶段的jar运行多个斜杠和少个斜杠都是有区别的,关于此组件的使用等说明后文专门分析。

datasource

datasource是Spring Boot的内置的数据源,如若在项目内引入了DataSourceAutoConfiguration的starter,则限制必须要配置有datasource的参数,所以如果是单个数据源可以直接使用spring.datasource进行更多的数据源参数配置,同时也可以排除该DataSourceAutoConfiguration配置,由自定义的形式声明datasource,关于多数据源的使用后面专门实践。

session

博客系统采用了前端和后端的分离开发,前端主要负责页面展示,后端提供管理功能和接口数据提供,所以两个项目之间使用了spring session来管理用户会话,同样考虑运维成本使用了spring session jdbc的分布式策略,本站有对应的spring session的实现案例,同时后文中也会给出spring session jdbc在应用中的细节处理。

mybatis

博客2.0的持久层终于还是用上了mybatis,与1.0不同的是曾经自己写了一款持久层实现,若有兴趣本站另有文章可自行搜索。关于mybatis似乎没有使用到比较高端的知识点,重点会放在关于mybatis-plus组件上。

mybatis-plus

实话实说mybatis-plus的技能并未在工作中大量的去使用它,最多也只是使用了其内部提供的IdWorker雪花ID生成和IEnum枚举接口,至于它内部提供的逻辑删除、分页插件、动态表、面向对象CRUD等特性后文会逐一实践。顺便说一下关于mybatis的plus版本倒是略学了两个课程,最终还是选择了偏向于专业团队提供支持的mybatis-plus。

swagger

swagger在某些使用是很有用的一款接口开发调试组件,本次使用的则是国人大师xiaomin提供的swagger-bootstrap-ui封装,目前该组件早更名为新的项目了,后文也专门提供该组件的使用和小小的增强。

完整application.yml参考

application:
  version: 1.0.0
  formatted-version: vadmin-${application.version}
  title: chendd & jiangyou baobao 【开发环境】

server:
  port: 8888
  servlet:
    context-path: /
  tomcat:
    connection-timeout: 120s
logging:
  config: classpath:config/logback/logback-spring.xml
spring:
  banner:
    location: classpath:config/banner/banner.txt
  cache:
    ehcache:
      config: classpath:config/cache/ehcache.xml
  main:
    banner-mode: log #将banner输出至日志文件
  thymeleaf:
    mode: HTML
    encoding: UTF-8
    servlet:
      content-type: text/html
    cache: false
    prefix: classpath:/templates
    suffix: .html

  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/chendd-blog?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
    username: root
    password: ******
  session:
    store-type: jdbc
    timeout: 120m
  servlet:
    multipart:
      max-file-size: 20MB
      max-request-size: 100MB

mybatis:
  type-aliases-package: cn.chendd.blog.**.model
  configuration:
    map-underscore-to-camel-case: true #启用匈牙利转驼峰
    jdbc-type-for-null: null #空类型时的默认识别类型

mybatis-plus:
  type-enums-package: cn.chendd.blog.**.enums
  global-config:
    db-config:
      logic-delete-value: DISABLE
      logic-not-delete-value: USABLE
      #查询时动态sql的判定条件 != null && != ""(因为表单中提交过来的数据会为""的情况)
      select-strategy: not_empty
      update-strategy: ignored
  mapper-locations: classpath*:mybatis/mapper/**/*Mapper.xml

#swagger-ui-bootstrap
swagger:
  markdowns: classpath*:markdown/*
  basic:
    enable: true
    username: chendd
    password: ******


 点赞


 发表评论

当前回复:作者

 评论列表


留言区