设为首页 加入收藏

TOP

quarkus实战之六:配置(一)
2023-08-06 07:50:02 】 浏览:110
Tags:quarkus 配置

欢迎访问我的GitHub

这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos

本篇概览

  • 本文是《quarkus实战》系列的第六篇,咱们来掌握一个常用知识点:配置
  • 如同SpringBoot中的application.properties文件,对一个quarkus应用来说,配置是其重要的组成部分,web端口、数据库这些重要信息都放在配置中,咱们在编码时也会将一些业务参数做成配置,而不是硬编码(hard code)
  • 与配置有关的知识点不少,本文重点是如何设置,下一篇会详细说明如何使用配置
  • 本篇要学习和掌握的内容:先实践六种具体的配置方式,例如通过在系统变量、application.properties中去设置配置项,它们都是不同的配置方式,然后,再一起去了解配置文件中可以输入什么样的内容,除了常见的key&value,还有哪些类型可以用来配置
  • 将本篇的内容整理如下所示:
graph LR B(quarkus配置) --> C1(配置方式) B(quarkus配置) --> C2(配置内容) C1 --> D1(System properties) C1 --> D2(Environment variables) C1 --> D3(.env file) C1 --> D4(config目录下的application.properties) C1 --> D5(src/main/resources目录下的application.properties) C1 --> D6(MicroProfile Config configuration file) C2 --> D7(常规) C2 --> D8(引用其他配置) C2 --> D9(UUID) C2 --> D10(数组)

演示代码

  • 创建一个demo工程,参考下面的命令,这样的工程会自带一个web服务类HobbyResource.java
mvn "io.quarkus:quarkus-maven-plugin:create" \
  -DprojectGroupId="com.bolingcavalry" \
  -DprojectArtifactId="hello-quarkus" \
  -DprojectVersion="1.0-SNAPSHOT" \
  -DclassName="HobbyResource" \
  -Dpath="actions"
  • 用下面这段代码来演示配置是否生效,可见用了一个配置项greeting.message,所以我们需要配置它的值才行
package com.bolingcavalry;

import org.eclipse.microprofile.config.inject.ConfigProperty;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import java.time.LocalDateTime;

@Path("/actions")
public class HobbyResource {

    @ConfigProperty(name = "greeting.message")
    String message;

    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String hello() {
        return "Hello RESTEasy, " + LocalDateTime.now() + " [" + message + "]";
    }
}
  • 写好演示代码后,执行以下命令,将项目构建成单一jar文件,用于稍后的验证操作
mvn clean package -U -DskipTests -Dquarkus.package.type=uber-jar
  • 构建成功后,在target目录下生成文件hello-quarkus-1.0-SNAPSHOT-runner.jar,咱们就用它来验证各种配置方式是否生效

配置方式一览

  • 官方给出一张图,说明了所有配置方式以及它们的优先级

    config sources

  • 接下来挨个试试这些配置方式

方式一:System properties

  • 最常见的是启动应用时候通过-D参数指定环境变量,例如下面的命令
java -Dgreeting.message="from system properties" -jar hello-quarkus-1.0-SNAPSHOT-runner.jar
  • 如下图,可以成功获取属性值

image-20220305231052913

方式二:Environment variables

  • 在设置环境变量时,要注意转换规则:全大写、点号变下划线,因此greeting.message在环境变量中应该写成GREETING_MESSAGE

  • 打开控制台,执行以下命令,即可在当前会话中设置环境变量:

export GREETING_MESSAGE="from Environment variables"
  • 在同一个控制台执行java -jar hello-quarkus-1.0-SNAPSHOT-runner.jar启动应用,浏览器访问接口,如下图,可见环境变量已生效:

image-20220306085525814

方式三:.env file

  • 为了避免之前的操作带来的影响,请重新打开一个控制台
  • 在pom.xml文件所在目录新建文件.env,内容如下:
GREETING_MESSAGE=from .env file
  • 执行java -jar hello-quarkus-1.0-SNAPSHOT-runner.jar启动应用,浏览器访问接口,如下图,可见环境变量已生效:

image-20220306090306171

  • 这种配置方式有个问题要注意:.env中的配置,在代码中使用System.getenv(String)无法取得
  • 官方建议不要将.env文件提交到git、svn等版本控制工具中

方式四:config目录下的application.properties

  • 为了避免之前的操作带来的影响,请删除刚才创建的.env文件

  • hello-quarkus-1.0-SNAPSHOT-runner.jar文件所在目录,新建文件夹config

  • config文件夹下新建文件application.properties,内容如下:

    greeting.message=from config/application.properties
    
  • 执行java -jar hello-quarkus-1.0-SNAPSHOT-runner.jar启动应用,浏览器访问接口,如下图,可见环境变量已生效:

image-20220306094258427

方式五:src/main/resources目录下的application.properties

  • 为了避免之前的操作带来的影响,请删除刚才创建的config文件夹(里面的文件也删除)
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Spring 中的 @Cacheable 缓存注解.. 下一篇keycloak~MFA多因子认证

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目