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

springboot读取编译时传递的参数

需要借助application.properties的注入,才能进入到程序之中;

1.application.properties文件中配置:

customer.key=@abc.d@

2. pom文件中要配置替换规则:

<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<!-- 匹配 resources 下所有目录里的 .properties 文件 -->
<include>**/*.properties</include>
<!-- 匹配 resources 下所有目录里的 .xml 文件 -->
<include>**/*.xml</include>
<!-- 匹配 resources 下所有目录里的 .yml 文件 -->
<include>**/*.yml</include>
<!-- 匹配 resources 下所有目录里的 .yaml 文件 -->
<include>**/*.yaml</include>
<!-- 匹配 resources 下所有目录里的 .html 文件 -->
<include>**/*.html</include>
<!-- 匹配 resources 下所有目录里的 .js 文件 -->
<include>**/*.js</include>
<!-- 匹配 resources 下所有目录里的 .css 文件 -->
<include>**/*.css</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<filtering>false</filtering> <!-- 二进制文件不过滤 -->
<includes>
<include>**/*.png</include>
<include>**/*.jpg</include>
<include>**/*.gif</include>
<include>**/*.jar</include>
<include>**/*.zip</include>
<include>**/*.jpeg</include>
</includes>
</resource>
</resources>

3.程序中进行读取:

@Value("${customer.key:1}")
private String value;

4. 编译的时候去传递,例如:mvn clean package -Dabc.d=test

补充说明 如果要指定profile;可以加上 mvn clean package -Dabc.d=test -P dev

----------------------------------------------------------------------------------------------------------------------------

@Value("${customer.key}") 这里不能通过${} 直接获取,${}获取的是运行时参数,@ @获取的是编译时候的参数,如果是运行时参数,传递为 java -jar -Ddefind.key=v app.jar ; 获取可以通过@Value("${defind.key}") 或者System.getProperty("defind.key") 直接获取

-----------------------------------------------------------------------------------------------------------------------------

java -jar  -Ddefind.key=v 设置的是jvm参数,java -jar --defind.key=v设置的是spring命令行参数,两个都可以通过@Value("${defind.key}")

Spring Boot 的配置优先级如下(从高到低):

  1. 命令行参数 --app.key=xxx

  2. application.properties / application.yml

  3. JVM 系统参数 -Dapp.key=xxx

  4. 环境变量 export app.key=xxx

  5. 默认值(在代码或配置中写死的)

所以:命令行参数 --app.key=xxx 优先级高于 -Dapp.key=xxx

http://www.lryc.cn/news/614285.html

相关文章:

  • Spring AI 系列之四十 - Spring AI Alibaba-集成百炼智能体
  • 用browse实现菜单功能的方法
  • 《在 Spring Boot 中安全使用 Qwen API-KEY:环境变量替代明文配置的最佳实践》
  • 一文可视化分析2025年6月计算机视觉顶刊IJCV前沿热点
  • 数据结构(16)排序(上)
  • 代理模式在C++中的实现及面向对象设计原则的满足
  • vscode无法跳转到定义引用
  • 以下是使用这款ePub编辑器将指定章节转换为TXT文本文档的操作方法
  • JAVA基础-NIO
  • flutter TLS protocol versions: (TLSv1.2, TLSv1.3)
  • 【数据结构】排序(sort) -- 计数排序
  • 在 Elasticsearch/Kibana (ELK Stack) 中搜索包含竖线 (|)​​ 这类特殊字符的日志消息 (msg 字段) ​确实需要转义
  • 软件包管理、缓存、自定义 YUM 源
  • Vulnhub drippingblues 靶场复现 详细攻略
  • 强光干扰下误报率↓82%!陌讯多模态融合算法在高空抛物检测的实战优化
  • 自适应反步控制:理论与设计
  • 分布式微服务--GateWay的断言以及如何自定义一个断言
  • MySQL 配置性能优化赛:核心策略与实战技巧
  • 分布式系统性能优化实战:从瓶颈定位到架构升级
  • 前端后端之争?JavaScript和Java的特性与应用场景解析
  • Microsoft Dynamics AX 性能优化解决方案
  • 用JOIN替代子查询的查询性能优化
  • 深入解析基于Zookeeper分布式锁在高并发场景下的性能优化实践指南
  • DataFun联合开源AllData社区和开源Gravitino社区将在8月9日相聚数据治理峰会论坛
  • AI漫画翻译器-上传图片自动翻译,支持多语言
  • 分享超图提供的、很不错的WebGIS学习资源
  • 从安卓兼容性困境到腾讯Bugly的救赎:全链路崩溃监控解决方案-卓伊凡|bigniu
  • 什么是局放?局放在线智能传感器,敏锐洞察电气设备中的隐形故障!
  • bytearray和bytes
  • 进程管理、系统高负载、cpu超过800%等实战问题处理