网站首页
Java
站长
开源
框架
理论
JS
Linux
DB
服务器
NET
生活
软件
PHP
其他
您的位置:首页 > 框架 > SpringBoot中application.yml引入多个YML文件
SpringBoot中application.yml引入多个YML文件
2022-8-18    11283    0

首先,你要了解SpringBoot配置文件加载顺序,加载位置(代码内,Nacos等),当然这不是这里要说的,这里我们就是约定配置文件在resources下,一般有一个主配置文件application.yml,但是当配置过多时,一个配置文件,将会非常臃肿。

所以我们需要把配置文件拆分,一些不需要动的,公用的,核心的配置放到application.yml下,其他的可以有多种拆分方式,例如可以分开发环境、测试环境、正式环境

微信截图_20220819143441.jpg

在bootstrap.yml增加配置标记当前环境

spring:
  profiles:
    active: dev

这样配置文件等于分成了好多类,但是对于一个环境来说,有两个配置文件了,比如开发就是application.yml+application-dev.yml两个配置文件。


但是有个问题,比如如果工程里面有MySQL、Redis、Kafka、短信、邮件等配置时,还是非常臃肿,而且一旦我们要修改个东西,就要去application-dev.yml中找了,因此我们可以利用Spring配置文件中可以引用属性,再次拆分一下。

我们将所有地址、用户、密码可能需要变动的集中到一个配置文件,然后将其他分开,注意这里为了演示实际上是否需要拆根据实际情况(目前我用的就是两个配置)。

这样,我们把需要变动的放到application.yml内,然后比如MySQL的等单独成文件。

微信截图_20220819143110.jpg

然后在application.yml中除了配置环境以外,再引入其他配置

spring:
  profiles:
    active: dev
    include: druid,redis,kafka,zconfig

然后例如Redis配置文件application-redis.yml中,可以这样配置

spring:
    redis:
        host: ${redis.host}
        port: ${redis.port}
        password: ${redis.password}
        database: ${redis.database}
        connect-timeout: 30ms
        lettuce:
            pool:
                max-idle: 10
                max-active: 20
                min-idle: 2
                max-wait: 5000ms

这里定义了引用,我们在application-dev.yml中定义这些变量

redis:
  host: 127.0.0.1
  port: 6379
  password: 1234657890
  database: 0

这样,我们把配置文件一下子又拆分了好几个,当然必须是需要这么干了。

而且Spring的配置非常灵活,你也可以这样配置

spring:
  profiles:
#    active: dev,druid,redis,kafka,zconfig
    include: dev,druid,redis,kafka,zconfig


一切技术都是为功能服务的,这里只是演示如何使用,一切以实际情况为主

由于Spring的配置非常灵活,因此有必要统一使用方式,防止把自己给配置蒙了。

比如,我这里叫application.yml,当时别人就喜欢叫bootstrap.yml,然后再加后缀。


END

上一篇: 多线程同步计数器CountDownLatch,CyclicBarrier,Semaphore
下一篇: 分布式任务调度平台XXL-JOB:调度日志打印时区问题
发表评论:
您的网名:
个人主页:
编辑内容: