springboot项目多层级多环境yml设计(代码片段)

valarchie valarchie     2023-03-01     390

关键词:

需求场景

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

# 日志配置
logging:
  level:
    # 记得配置到包名
    com.agileboot: debug
    org.springframework: info
  pattern:
    console: "%date %thread %green(%level) [%cyan(%logger10):%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文件中。如何实现不同环境日志路径不一样?

想要达到的效果

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

详细代码实现在开源项目Agileboot中:https://github.com/valarchie/AgileBoot-Back-End

实现

假设我们有一个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及日志设计的内容比较少。在此稍作总结,希望有帮助到有类似需求的人。

欢迎加入全栈技术交流群:1398880

springboot项目分环境maven打包,动态配置文件,动态配置项目(代码片段)

SpringbootMaven项目打包使用Maven实现多环境testdevprod打包项目的结构在下图中可用看出,我们打包时各个环境需要分开,采用application-环境.yml的方式命名环境配置开始首先我们需要在application.yml文件中配置spring.profiles.active=@[email... 查看详情

springboot入门

目录入门项目初始化yml自定义属性controllerspringData事务静态资源表单验证AOP自定义全局异常单元测试项目打包linux部署定时器整合其他框架freemarkermybatisredisElasticSearch入门版本:2.0.5项目初始化新建springinit项目可以:添加dev.yml和-p... 查看详情

springboot中修改.properties文件为.yml文件时项目不能运行问题

可能很多小伙伴会考虑环境配置的问题,maven版本、idea版本什么的,其实没有必要只要你之前.ies时能运行,那么环境配置就没有问题不能运行的原因,一定是你的.yml文件的格式问题.yml文件一定要注意缩进的问题,不懂得小伙伴... 查看详情

springboot中修改.properties文件为.yml文件时项目不能运行问题

可能很多小伙伴会考虑环境配置的问题,maven版本、idea版本什么的,其实没有必要只要你之前.ies时能运行,那么环境配置就没有问题不能运行的原因,一定是你的.yml文件的格式问题.yml文件一定要注意缩进的问题,不懂得小伙伴... 查看详情

springboot-使用yml文件配置多环境

两种配置方式1:在一个yml文件中,2:在多个yml文件中1一个yml文件application.ymlspring: profiles:  active:dev---#开发环境配置spring: profiles:devserver: port:1000---#测试环境配置spring: profiles:stgserver:  查看详情

springboot多环境配置yml

https://www.cnblogs.com/mr-yang-localhost/p/8971327.html   springboot多环境配置https://blog.csdn.net/liuchuanhong1/article/details/54694458springboot中多环境配置支持https://blog.csdn.net/davis2015csdn/article 查看详情

springboot多个yml实现开发测试线上多环境(代码片段)

多个yml实现多环境spring:#环境dev:开发环境|test:测试环境|prod:生产环境profiles:active:dev#激活的配置文件在激活application-dev.yml时若其中存在application.yml同名配置时后者的配置属性会被覆盖(即激活配置文件优先级高于总配置文件)单... 查看详情

springboot多环境下配置文件

最近研究了一下springboot下不同环境(测试环境、生产环境)下不同配置文件的加载方式,本文是通过修改pom文件中的参数进行配置,具体方法如下:1、首先要建立三个配置文件:application.yml、application-dev.yml、application-prop.yml,... 查看详情

springboot创建和使用(代码片段)

目录什么是SpringBootSpringBoot的优点SpringBoot项目的创建1、使用idea创建2、项目目录介绍和运行 SpringBoot配置文件 1、配置文件2、配置文件的格式3、properties3.1、properties基本语法 3.2、读取配置文件 3.3、缺点4、yml4.1、优点4.2、yml基... 查看详情

docker+nginx部署springboot+vue前后端分离项目(代码片段)

目录一、windows环境1.1、windows环境前端部署1.2、windows环境后端部署二、linux环境2.1、安装docker2.2、安装dockercompose2.3、编写Dockerfile文件2.4、编写docker-compose.yml文件2.5、修改application-pro.yml2.6、准备好nginx的挂载目录和配置2.7、上传... 查看详情

springboot的多环境配置

语法结构:application-profile.properties/ymlprofile:代表某个配置环境的标识示例:  application-dev.properties/yml  开发环境  application-test.properties/yml  测试环境  application.prod.properties/yml  生产环境Windows环境下启动  java-ja... 查看详情

springboot.01.springboot概述及基本环境搭建(代码片段)

SpringBoot概述及基本环境搭建SpringBoot概述引言SpringBoot优势SpringBoot约定环境搭建环境要求准备工作1.新建项目空间2.配置Maven3.配置LogSupport创建项目的两种方式maven方式搭建1.新建Module2.pom.xml3.application.yml4.SpringBoot01MavenApplication.java5.T... 查看详情

springboot.01.springboot概述及基本环境搭建(代码片段)

SpringBoot概述及基本环境搭建SpringBoot概述引言SpringBoot优势SpringBoot约定环境搭建环境要求准备工作1.新建项目空间2.配置Maven3.配置LogSupport创建项目的两种方式maven方式搭建1.新建Module2.pom.xml3.application.yml4.SpringBoot01MavenApplication.java5.T... 查看详情

springboot使用profile结合maven实现多环境配置

...们在开发项目的时候,经常都会使用到多环境配置。springboot提供了非常方便的profile来做多环境配置。以下内容我们将使用2个环境配置:开发环境dev、生产环境prod。如果需要更多的环境配置依样画葫芦新增就好。首先spri... 查看详情

springboot多环境配置(代码片段)

springboot的配置文件application.yml是有固定模板的,如果想配置多个模板,可以创建application-***.yml的模式,其中***表示环境开发中,会遇到三种环境,dev,test,prod,因此在application.yml同目录下创建application-dev.ym... 查看详情

idea启动springboot项目找不到application.yml配置文件

idea启动项目时读取不到application-pro.yml文件,但是配置文件都在resource目录下;解决:target/classes目录是IDEA的classpath目录,项目编译后配置文件必须在这个目录下才可以访问到,查看我的IDEA的项目目录,发现target/classess下面没有a... 查看详情

docker-compose+nginx部署springboot+vue前后端分离项目(代码片段)

目录一、windows环境1.1、windows环境前端部署1.2、windows环境后端部署二、linux环境2.1、安装docker2.2、安装dockercompose2.3、编写Dockerfile文件2.4、编写docker-compose.yml文件2.5、修改application-pro.yml2.6、准备好nginx的挂载目录和配置2.7、上传... 查看详情

springboot5-profile配置

profile配置profile是spring用来针对不同的环境对应不同的配置提供支持。application-profile.yml例如application-dev.yml--测试环境application-prod.yml--生产环境application-uat.yml--客户测试环境application.yml里添加spring:profiles:active:-dev  查看详情