当前位置: 首页 > news >正文

SpringBoot的外部化配置

一、什么是外部化配置

外部化配置是指把应用程序中各种可配置的参数、属性等信息,从代码内部提取出来,放置在外部的配置文件、数据库或配置中心等地方(比如使用.properties、.yml 或.xml 等格式的文件)进行管理。提高应用程序的可维护性、可扩展性和灵活性。通过将配置信息外部化,无需修改和重新部署代码,就可以调整应用程序的行为和参数,以适应不同的环境(如开发、测试、生产环境)或业务需求的变化。

二、springboot默认读取路径

springboot默认的配置文件是application.properties,通过springboot自动的脚手架生成的文件结构如下。其application.properties位于resource下方。

2.1 类路径下

创建一个配置类,在配置类中访问配置文件中的myapp.name的值,看看springboot的应用程序会不会自动找到其application.properties中的内容。

package com.example.propertieslocation.config;import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;//纳入IoC容器管理
@Component
public class appConfig {@Value("${myapp.name}")private String appPath;public void printInfo(){System.out.println("App Path: " + appPath); }}

 在test中进行测试,发现springboot程序确实可以找到application.properties中的内容。

2.2 类路径下的config下

 在其类路径下新建config目录,并在该目录中新建application.properties

 再次进行测试,看看其找到的application.properties的文件到底位在哪。

可以看出来其优先找了config目录下的application.properties。

2.3 外部化的直接路径

在打包成jar包之前,主入口类添加如下代码。

package com.example.propertieslocation;import com.example.propertieslocation.config.appConfig;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;@SpringBootApplication
public class PropertiesLocationApplication {public static void main(String[] args) {ConfigurableApplicationContext context = SpringApplication.run(PropertiesLocationApplication.class, args);appConfig appConfig =  context.getBean(appConfig.class);appConfig.printInfo();context.close();}}

点击package打包使其成为jar包。

打包好的jar包如下

并新建application.properties

 进行测试,看springboot程序自动优先找到的是那个路径下的配置文件

 测试结果如下

优先选择了外部化配置的 application.properties。

2.4 外部化路径下的config目录中

 

并将外部化配置的config中application.properties的内容改成myapp.name=file:./config/。

测试如下:

总结

所以springboot程序查找application.properties的顺序是,外部>内部;config中的>当前路径下的。

相关文章:

  • 无人机避障——如何利用MinumSnap进行对速度、加速度进行优化的轨迹生成(附C++python代码)
  • API的学习总结(上)
  • 设计模式系列(03):设计原则(二):DIP、ISP、LoD
  • 记录算法笔记(2025.5.13)二叉树的最大深度
  • 【Qt】pro工程文件转CMakeLists文件
  • .NET8关于ORM的一次思考
  • MapReduce 入门实战:WordCount 程序
  • 2025.05.11阿里云机考真题算法岗-第三题
  • MapReduce打包运行
  • JavaEE--初识网络
  • OCR:开启财务数字化变革的魔法钥匙
  • 提示词设计模板(基于最佳实践)
  • springboot3+vue3融合项目实战-大事件文章管理系统-获取文章分类详情
  • BFS算法篇——从晨曦到星辰,BFS算法在多源最短路径问题中的诗意航行(上)
  • 【Android】下拉刷新组件Swiperefreshlayout
  • 力扣算法---总结篇
  • 分式注记种表达方式arcgis
  • Qubes os系统详解
  • Leetcode 3542. Minimum Operations to Convert All Elements to Zero
  • Android之横向滑动列表
  • 央媒评网红质疑胖东来玉石定价暴利:对碰瓷式维权不能姑息
  • 体坛联播|C罗儿子完成国家队首秀,德约结束与穆雷合作
  • 英媒:英国首相住所起火,目前无人伤亡
  • “不为一时一事所惑,不为风高浪急所扰”——习近平主席对俄罗斯进行国事访问并出席纪念苏联伟大卫国战争胜利80周年庆典纪实
  • 年轻小将绽放光芒!中国短跑男女接力队直通东京世锦赛
  • 著名军旅作家、文艺评论家周政保逝世,享年77岁