Quarkus项目配置方式详解

简介: Quarkus 可以从多个地方获取项目的配置,它读取配置优先级入下图,在下面的优先级中,一旦读取到某个配置,就不会再继续读取后面配置中的这个配置了。

网络异常,图片无法展示
|


配置加载流程


Quarkus 可以从多个地方获取项目的配置,它读取配置优先级入下图,在下面的优先级中,一旦读取到某个配置,就不会再继续读取后面配置中的这个配置了。

网络异常,图片无法展示
|

0x1 System Properties

系统属性可以在启动期间通过 -D 标志传递给应用程序。

比如要设置 http 服务的运行端口,各个运行方式传递系统参数的方式如下:

  • Quarkus dev模式:mvn quarkus:dev -Dquarkus.http.port=8888
  • 运行 jar 包:java -Dquarkus.http.port=8888 -jar quarkus-run.jar
  • 运行 native-imageapp-runner -Dquarkus.http.port=8888

0x2 Environment variables

环境变量的名字遵循 MicroProfile Config

Environment Variables Mapping Rules
Some operating systems allow only alphabetic characters or an underscore, _, in environment variables. Other characters such as ., /, etc may be disallowed. In order to set a value for a config property that has a name containing such disallowed characters from an environment variable, the following rules are used.
The ConfigSource for the environment variables searches three environment variables for a given property name (e.g. com.ACME.size):
1. Exact match (i.e. com.ACME.size)
2. Replace each character that is neither alphanumeric nor _ with _ (i.e. com_ACME_size)
3. Replace each character that is neither alphanumeric nor _ with _; then convert the name to upper case (i.e. COM_ACME_SIZE)
The first environment variable that is found is returned by this ConfigSource.

环境变量的话各个系统设置的方式不一样,具体可以查一下自己系统设置环境变量的方式,一般 Unix 类的系统设置环境变量一般分为命令行设置环境变量文件配置

  • 命令行配置:export QUARKUS_HTTP_PORT:8888
  • 配置文件配置:环境变量配置文件又分用户变量配置文件和系统变量配置文件,直接在对应的配置文件里加上这一样就可以了,但是一般不推荐这么用

0x3 .env 文件

注意:.env 文件中的环境变量无法像普通的环境变量通过 System.getenv(String) API 获得。

.env 文件的作用和环境变量类似,但是作用域更小,它只作用于当前项目,不像环境变量可以作用于所有项目

它的设置方式是在 .env 文件里配置键值对的方式来设置变量,键名称和设置环境变量一样遵守 MicroProfile Config 规范

使用方式:

  • 对于 dev 模式:可以放在项目的根目录下来使用,但是不要把它和代码一起打包
  • 对于 jarnative-image 运行方式下:可以将 .env 文件放在和 jar 包或 native-image 同一目录下

0x4 Quarkus Application配置文件

Quarkus 和 Spring Boot 项目一样,支持 application.properties 配置文件。同时在 jar 包和 native-image 的运行模式下还支持当前 jar 文件和native-image 文件同目录下 config 文件夹里的 application.properties 配置文件,并且 config 文件夹里的配置文件优先级高于项目 resources 文件夹里的配置文件

对于 dev 的运行模式下,项目也可以使用 config 文件里的配置文件,就是手动把 config 文件夹移到 target 文件夹里,但是在使用 mvn clean 命令时会把这个文件夹清理掉,到时候又要自己手动重新创建 config 文件夹和里面的配置文件,所以在 dev 模式下不推荐使用 config/application.properties

0x5 MicroProfile 配置文件

它放在 src/main/resources/META-INF/microprofile-config.properties

它的工作原理和项目的 resources 文件夹下的 application.properties 完全相同,建议使用 resources 文件夹下的配置文件

使用 yml 配置文件


以上配置中,除了系统属性、环境变量、.env 文件外,配置文件都可以支持 yml 格式的配置,不过需要额外添加依赖

添加依赖

  1. pom.xml 文件添加依赖
<dependency>
  <groupId>io.quarkus</groupId>
  <artifactId>quarkus-config-yaml</artifactId>
</dependency>
  1. 或者可以直接用 maven 命令来添加拓展依赖
./mvnw quarkus:add-extension -Dextensions="io.quarkus:quarkus-config-yaml"

添加yml文件

移除src/main/resources/application.properties 文件,添加 src/main/resources/application.yaml 文件

如果两个文件都存在,Quarkus 会优先使用来自 yml 的配置,然后再使用 properties 的配置,所以为了不搞混淆,建议删除 properties 文件。

配置文件扩展名支持 ymlyaml

目录
相关文章
|
2月前
|
存储 运维 安全
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
通过以上措施,可以保证Spring Boot项目的配置管理在专业水准上,并且易于维护和管理,符合搜索引擎收录标准。
52 2
|
3月前
|
SQL IDE Java
入门Cloud Toolkit:简化你的Java应用开发与部署流程
【10月更文挑战第19天】作为一名长期从事Java开发的程序员,我一直致力于寻找能够简化日常开发工作的工具。在众多工具中,阿里巴巴推出的Cloud Toolkit引起了我的注意。这款免费的插件旨在帮助开发者更轻松地进行开发、测试及部署工作,尤其是在与云服务交互时表现尤为出色。本文将从个人的角度出发,介绍Cloud Toolkit的基本功能及其使用技巧,希望能帮助初学者快速上手这款实用工具。
39 1
|
6月前
|
存储 Java Serverless
Java Spring Boot应用如何实现推送代码到指定仓库并自动部署
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
6月前
|
Java 持续交付 Maven
Spring Boot程序的打包与运行:构建高效部署流程
构建高效的Spring Boot部署流程对于保障应用的快速、稳定上线至关重要。通过采用上述策略,您可以确保部署过程的自动化、可靠性和高效性,从而将专注点放在开发上面。无论是通过Maven的生命周期命令进行打包,还是通过容器技术对部署过程进行优化,选择正确的工具与实践是成功实现这一目标的关键。
233 2
|
7月前
|
Kubernetes Cloud Native Java
quarkus 搭建与基础开发环境配置总结
quarkus 搭建与基础开发环境配置总结
54 0
|
8月前
|
Java 应用服务中间件 Maven
简化springboot部署,太灵活方便了!
简化springboot部署,太灵活方便了!
|
8月前
|
Java 测试技术 Maven
【SpringBoot】多环境开发、分组管理、开发控制
【SpringBoot】多环境开发、分组管理、开发控制
73 0
|
JSON 缓存 监控
我开源了团队内部基于SpringBoot Web快速开发的API脚手架v1.7.0更新
什么是 rest-api-spring-boot-starter rest-api-spring-boot-starter 适用于SpringBoot Web API 快速构建让开发人员快速构建统一规范的业务RestFull API 不在去关心一些繁琐。重复工作,而是把重点聚焦到业务。
|
缓存 监控 安全
我开源了团队内部基于SpringBoot Web快速开发的API脚手架v1.6.0更新
什么是 rest-api-spring-boot-starter rest-api-spring-boot-starter 适用于SpringBoot Web API 快速构建让开发人员快速构建统一规范的业务RestFull API 不在去关心一些繁琐。重复工作,而是把重点聚焦到业务。
|
Java 数据库连接 数据库
【SpringBoot2】开发实用篇-配置高级
1、@ConfigurationProperties 2、宽松绑定/松散绑定 3、常用计量单位绑定 4、校验 5、数据类型转换
138 1
【SpringBoot2】开发实用篇-配置高级

热门文章

最新文章