码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • SpringBoot-Profile功能与外部化配置


    目录

    一、Profile功能

    二、@Profile条件装配

    三、profile分组

    四、外部化配置

    4.1 配置文件查找位置

    4.2 配置文件加载顺序


    一、Profile功能

            为了方便多环境适配,springboot简化了profile功能。

    • 对于默认配置文件 application.yaml;任何时候都会加载
    • 我们还可以指定环境配置文件 application-{env}.yaml
    • 激活指定环境

            1.配置文件激活

    spring.profiles.active=prod

            2.命令行激活(修改配置文件的任意值,命令行优先)--

     java -jar xxx.jar --spring.profiles.active=prod --person.name=haha

                    激活application-{env}.yaml,同时设置person.name属性为haha

    • 默认配置与环境配置同时生效
    • 同名配置项,profile配置优先

    二、@Profile条件装配

            假如有这样的配置类,可以使用@Profile注解表明它生效的场景。也可以标注在方法上。

    1. @Configuration(proxyBeanMethods = false)
    2. @Profile("production") //环境指定为production时生效
    3. public class ProductionConfiguration {
    4. // ...
    5. }

    三、profile分组

            当一个环境下有两个配置文件时可以将它们分为一组,则激活这个组的时候两个配置文件都生效:

    1. spring.profiles.group.production[0]=prod1
    2. spring.profiles.group.production[1]=prod2
    3. #使用:--spring.profiles.active=production 激活

    四、外部化配置

            外部化配置就是把那些根据不同环境切换的参数放在工程外部。

            常用外部配置源:Java属性文件、YAML文件、环境变量、命令行参数;

    4.1 配置文件查找位置

    (1) classpath 根路径

    (2) classpath 根路径下config目录

    (3) jar包当前目录

    (4) jar包当前目录的config目录

    (5) /config子目录的直接子目录

    4.2 配置文件加载顺序

    1.  当前jar包内部的application.properties和application.yml
    2.  当前jar包内部的application-{profile}.properties 和 application-{profile}.yml
    3.  引用的外部jar包的application.properties和application.yml
    4.  引用的外部jar包的application-{profile}.properties 和 application-{profile}.yml

            指定环境优先,外部优先,后面的可以覆盖前面的同名配置项 。最简单的实践:

            我们在打包好的应用所在目录下配置一个application.yml,那么该配置文件就会生效。

  • 相关阅读:
    手拉手一起学 HTML(上)
    小程序如何实现登录数据持久化
    迅狐跨境商城系统|全平台兼容|前端采用uni-app跨端框架,后端采用ThinkPHP5框架
    Win10怎么删除右键菜单里的AMD显卡设置选项
    通过easyexcel实现数据导入功能
    元宇宙在技术大爆炸时代迎来链游新世界
    【位操作笔记】计算以2为底整数N的对数 普通方法
    安装 Node.js
    .NET MAUI RC2 发布,支持 Tizen 平台
    多线程的几种创建方式以及手写@Async异步注解
  • 原文地址:https://blog.csdn.net/weixin_62427168/article/details/126177378
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号