SpringBoot项目多层级多环境yml设计详解

目录
  • 需求场景
  • 想要达到的效果
  • 实现

需求场景

基础设施模块中有一些通用固定的基础配置。例如:日志的配置,Spring本身的配置以及MyBatis Plus相关的固定配置等等。 这些配置往往与环境无关,如何复用?

# 日志配置
logging:
  level:
    # 记得配置到包名
    com.agileboot: debug
    org.springframework: info
  pattern:
    console: "%date %thread %green(%level) [%cyan(%logger{10}):%magenta(%line)] %red(%method) | %msg%n"
# Spring配置
spring:
  # 文件上传
  servlet:
     multipart:
       # 单个文件大小
       max-file-size:  10MB
       # 设置总上传的文件大小
       max-request-size:  20MB
  mvc:
    pathmatch:
      matching-strategy: ANT_PATH_MATCHER
  jackson:
    deserialization:
      fail-on-unknown-properties: false
    serialization:
      write-dates-as-timestamps: false
    date-format: yyyy-MM-dd HH:mm:ss

基础设施模块中还有一些独立于环境的配置。例如Mysql和Redis或者MQ之类的。如何区分环境?

# 数据源配置
spring:
    # redis 配置
    redis:
        # 地址
        host: localhost
        # 端口,默认为6379
        port: 36379
        # 数据库索引
        database: 0
        # 密码
        password: 12345
        # 连接超时时间
        timeout: 10s
        lettuce:
            pool:
                # 连接池中的最小空闲连接
                min-idle: 0
                # 连接池中的最大空闲连接
                max-idle: 8
                # 连接池的最大数据库连接数
                max-active: 8
                # #连接池最大阻塞等待时间(使用负值表示没有限制)
                max-wait: -1ms

日志相关的配置我们一般都配在logback.xml文件中。如何实现不同环境日志路径不一样?

想要达到的效果

  • 复用基础设施模块中的固定配置。
  • 区分多环境的配置。
  • logback日志引入多环境配置。

详细代码实现在开源项目Agileboot中:github.com/valarchie/A…

实现

假设我们有一个Admin模块,我们可以给它定义一份application.yml文件。文件中描述该模块特定的配置。比如端口,访问路径之类的。

# 开发环境配置
server:
  # 服务器的HTTP端口,默认为8080
  port: 8080
  servlet:
    # 应用的访问路径
    context-path: /
  tomcat:
    # tomcat的URI编码
    uri-encoding: UTF-8
    # 连接数满后的排队数,默认为100
    accept-count: 1000
    threads:
      # tomcat最大线程数,默认为200
      max: 800
      # Tomcat启动初始化的线程数,默认值10
      min-spare: 100
# Spring配置 如果需要无Mysql  无Redis直接启动的话  dev改为test
# 生产环境把dev改为prod
spring:
  profiles:
    active: basic,dev

在基础设施模块中新建

applicaiton-basic.yml,配置一些与环境无关的基础固定复用配置。

application-dev.yml,配置一些和环境相关的配置,例如数据库的配置。

然后在spring.profiles.active配置中指定basic和dev文件。

此时springboot会自动去找applicaiton-basic.ymlapplication-dev.yml文件。
所以我们最终的配置文件是由applicaiton.yml+applicaiton-basic.yml+applicaiton-dev.yml叠加的配置。

日志的多环境配置,我们可以新建一份logback-spring.xml文件。 假设我们想要根据环境配置不同的日志路径。可以在例如application-dev.yml文件中配置logging.file.path。

然后在logback-spring.xml文件中使用springProperty标签读取多环境yml中配置的路径。

此时日志的路径就会分别读取不同环境配置的路径了。

关于多层级多环境的yml及日志设计的内容比较少。在此稍作总结,希望有帮助到有类似需求的人。

以上就是SpringBoot项目多层级多环境yml设计详解的详细内容,更多关于SpringBoot多层级多环境yml的资料请关注我们其它相关文章!

(0)

相关推荐

  • springboot如何引入外部yml配置文件

    目录 springboot引入外部yml配置文件 springboot引入多个yml 1. 项目内部配置文件 2. 外部配置加载顺序 springboot引入外部yml配置文件 当需要在springboot中引用其他的yml文件时,需要在application.yml里配置 spring: profiles: include: email,xmyb 值得注意的是:application-email.yml的前缀一定要和主在配置文件application.yml的名字一致 springboot引入

  • SpringBoot-application.yml多环境配置详解

    介绍 开发SpringBoot应用的时候,通常程序需要在测试环境测试成功后才会上线到生产环境.而测试环境和生产环境的数据库地址.服务器端口等配置都不同.在为不同环境打jar包时,需要频繁的修改application.yml配置文件,十分麻烦.可以采用创建多个配置文件的方法解决这一问题. 为了实现多环境配置,我们可以在本地开发的时候在Resource文件夹下新建不同环境的配置文件,如下图所示: 默认配置文件application.yml文件可根据自己需求使用,最后会合并其他的application

  • SpringBoot读写操作yml配置文件方法

    目录 yml配置规则 普通的kv读取 读取到集合和数组 读取为对象和Map yml配置规则 属性跟属性值之间使用“:”和一个“空格”隔开,层级结构通过缩进对齐,缩进只能使用空格,不能用tab,并且大小写敏感,使用#注释文档: yml配置除了能像properties读取为kv结构,还能方便的读取成集合(List.Set等).数组.对象.Map,还能进行嵌套结构读取: 普通的kv读取 普通kv结构可以直接使用@Value标签读取,@Value除了可以读取普通kv,也能读取List或Map结构里的某一

  • 如何给yml配置文件的密码加密(SpringBoot)

    目录 1.低版本2.x 1)引入jar包 2)生成密码 3)测下解密 4)yml配置 5)测测登录 2.高版本 3.x 1)引入jar包 2)生成密码 3)yml配置 最近在忙着解决规约扫描的问题,其一就是这个明文密码必须加密的问题,一般是数据库的配置.首先我用的是默认的PBEWithMD5AndDES默认的MD5加密方式, 弄好之后有要求使用AES_256/SM2/SM4等高级的算法加密,于是后来又升级了jar包使用默认的PBEWITHHMACSHA512ANDAES_256. JDK版本-1

  • SpringBoot动态更新yml文件

    目录 前言 项目依赖 YML文件内容获取 YML文件内容更新 YML属性刷新 Property刷新 注解刷新 前言 在系统运行过程中,可能由于一些配置项的简单变动需要重新打包启停项目,这对于在运行中的项目会造成数据丢失,客户操作无响应等情况发生,针对这类情况对开发框架进行升级提供yml文件实时修改更新功能 项目依赖 项目基于的是2.0.0.RELEASE版本,所以snakeyaml需要单独引入,高版本已包含在内 <dependency> <groupId>org.yaml</

  • Springboot如何通过yml配置文件为静态成员变量赋值

    目录 通过yml配置文件为静态成员变量赋值 这里我强调一句 Springboot静态变量读取yml配置信息 解决方式1 解决方式2 通过yml配置文件为静态成员变量赋值 我们对springboot为普通成员变量的方式很熟悉,所以经常定式思维的认为静态属性的赋值和普通属性一样,结果调试的时候调试半天发现静态属性还是Null. 仔细一想才发现静态属性和普通属性的赋值方式不太一样. 到底是哪里不一样呢?问题出在set方法.我们通过idea快捷键或注解 @Data 得到的set方法是静态方法. 这里我强

  • SpringBoot项目多层级多环境yml设计详解

    目录 需求场景 想要达到的效果 实现 需求场景 基础设施模块中有一些通用固定的基础配置.例如:日志的配置,Spring本身的配置以及MyBatis Plus相关的固定配置等等. 这些配置往往与环境无关,如何复用? # 日志配置 logging: level: # 记得配置到包名 com.agileboot: debug org.springframework: info pattern: console: "%date %thread %green(%level) [%cyan(%logger{

  • IntelliJ IDEA基于SpringBoot如何搭建SSM开发环境的步骤详解

    之前给大家在博文中讲过如何通过eclipse快速搭建SSM开发环境,但相对而言还是有些麻烦的,今天玄武老师给大家介绍下如何使用IntelliJ IDEA基于SpringBoot来更快速地搭建SSM开发环境,相比于传统搭建方式,极少的配置文件和配置信息会让你彻底爱上它. 环境搭建步骤详解 第1步:创建Spring Initializr项目 在IntelliJ IDEA中新建项目,选择Spring Initializr,JDK版本选择自己安装的版本(首次使用可能显示没有,那么就点击New去按照步骤创

  • SpringBoot项目jar和war打包部署方式详解

    目录 jar与war jar包部署运行 war包部署运行 jar与war Spring Boot项目开发完成后,需要以jar或war的方式将项目打包部署到测试开发环境. jar即Java Archive,是Java归档文件,该文件格式与平台无关,它允许将许多文件组合成一个压缩文件.Java程序都可以打成jar包,目前Docker广泛使用,Java项目都会打成可执行的jar包,最终构建为镜像文件来运行. jar文件格式基于流行的ZIP文件格式.与ZIP文件不同的是,jar文件不仅用于压缩和发布,而

  • SpringBoot项目中如何实现MySQL读写分离详解

    目录 1.MySQL主从复制 1.1.介绍 二进制日志: MySQL复制过程分成三步: 1.2.主从库搭建 1.2.1.主库配置 1.2.2.从库配置 1.3.坑位介绍 1.3.1.UUID报错 1.3.2.server_id报错 1.3.3.同步异常解决 操作不规范,亲人两行泪…… 2.项目中实现 2.1.ShardingJDBC 2.2.依赖导入 2.3.配置文件 2.4.测试跑路 总结 1.MySQL主从复制 但我们仔细观察我们会发现,当我们的项目都是用的单体数据库时,那么就可能会存在如下

  • Springboot项目优雅地处理日志的方法详解

    如上图,每天会生成一个新的日志文件,然后日志进行分类,我这里只对error和info进行分类. 怎么做呢? 首先,在resource目录创建一个新文件,取名logback-spring.xml <?xml version="1.0" encoding="UTF-8" ?> <configuration > <appender name="consoleLog" class="ch.qos.logback.c

  • Springboot项目基于Devtools实现热部署步骤详解

    1.在pom.xml(如果是多模块,则此pom根据需要可设为具体模块)文件中添加 <dependency>     <groupId>org.springframework.boot</groupId>     <artifactId>spring-boot-devtools</artifactId>    <scope>runtime</scope>     <optional>true</option

  • springboot项目启动指定对应环境的方法

    目录 springboot项目启动指定对应环境 要求: 默认启动指定的是默认配置文件 1.命令行的方式 第一种 第二种 2.idea方式 设置启动配置 第一种方式 第二种方式 总结 springboot项目启动指定对应环境 要求: 已dev环境启动demo-0.0.1-SNAPSHOT.jar 默认启动指定的是默认配置文件 指定的是application.properties或者application.yml配置文件(默认环境) java -jar demo-0.0.1-SNAPSHOT.jar

  • SpringBoot+docker环境变量配置详解

    项目中遇到springBoot+docker需要配置不同环境变量的问题,做个简单的总结: 1.开发环境ide中启动项目 可以通过ide的环境变量参数配置,启动之后使用哪个配置,比如 这样就使用application-test.yml中的配置 2.通过gradle打包 可以通过-P参数来指定打包后的jar使用哪种环境来运行,比如 gradlew -Pprod bootWar 打包之后运行会使用prod中的配置:我的项目是jhipster生成出来的,现在需要添加test的环境配置,需求修改下项目的g

  • SpringBoot多环境配置教程详解

    目录 一.为什么要配置多环境 二.如何进行多环境配置呢 1.针对 yaml 配置文件 2.针对 properties 配置文件 三.命令行启动参数 第一步:打包项目 第二步:输入命令行 补充内容 一.为什么要配置多环境 当我们工作开发真实的项目时,可能会遇到不同的环境,如:开发环境.生产环境.测试环境等,不同的环境所需要的配置内容也会不尽相同,如果我们每次切换环境时再去配置对应的环境配置,肯定会降低我们的开发效率,所以,掌握多环境配置还是非常有必要的. 二.如何进行多环境配置呢 我们还是以配置端

  • 使用git迁移Laravel项目至新开发环境的步骤详解

    对于如何创建一个Laravel项目,相信对新接触Laravel的朋友并不存在太多的问题,但是今天我们要来看一下如何将已有的Laravel项目迁移(复制)到新的开发环境. 我们需要用到的工具是git,如果你不知道git是什么,这里有一个传送门,看完之后再回来: http://github.com 简单说来,git就是Github开发的VCS(Version Control System),即版本控制系统.如果你使用过SVN,那么你应该很清楚版本控制是什么. 本文的示例环境是Ubuntu 16.04

随机推荐