1.10. 设置自定义配置源
默认情况下,Quarkus 应用程序从项目的 src/main/resources 子目录中的 application.properties 文件读取属性。使用 Quarkus,您可以根据外部配置的 MicroProfile 配置规范从其他来源加载应用配置属性。您可以通过定义实施 org.eclipse.microprofile.config.spi.ConfigSource 和 org.eclipse.microprofile.config 从其他来源加载配置属性。此流程演示了如何在 Quarkus 项目中实施自定义配置源。
.spi.ConfigSource 的类,使应用能够
前提条件
您有 Quarkus config-quickstart 项目。
对于该项目的完整示例,请下载 Quarkus Quickstarts 存档或克隆 Quarkus Quickstarts Git 存储库,再进入 config-quickstart 目录。
流程
在您的项目中,创建一个实施
org.eclipse.microprofile.config.spi.ConfigSourceProvider接口的新类。覆盖getConfigSources ()方法,以返回自定义ConfigSource对象列表。org.acme.config.InMemoryConfigSourceProvider示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要定义您的自定义配置源,请创建一个实现
org.eclipse.microprofile.config.spi.ConfigSource接口的InMemoryConfigSource类:org.acme.config.InMemoryConfigSource示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
getOrdinal ()方法返回ConfigSource类的优先级。因此,当多个配置源定义同一属性时,Quarkus 可以选择适当的值,如具有最高优先级的ConfigSource类定义。
在项目的
src/main/resources/META-INF/services/子目录中,创建名为org.eclipse.microprofile.config.spi.ConfigSourceProvider的文件,并在您创建的文件中输入实施ConfigSourceProvider的类的完全限定域名:org.eclipse.microprofile.config.spi.ConfigSourceProvider文件示例:org.acme.config.InMemoryConfigSourceProvider
org.acme.config.InMemoryConfigSourceProviderCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要确保在编译和启动应用程序时注册并安装您创建的
ConfigSourceProvider,您必须完成上一步。编辑项目中的
GreetingResource.java文件,添加以下更新:@ConfigProperty(name="my.prop") int value;
@ConfigProperty(name="my.prop") int value;Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
GreetingResource.java文件中,扩展hello方法以使用新属性:@GET @Produces(MediaType.TEXT_PLAIN) public String hello() { return message + " " + name.orElse("world") + " " + value; }@GET @Produces(MediaType.TEXT_PLAIN) public String hello() { return message + " " + name.orElse("world") + " " + value; }Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在开发模式下编译并启动应用程序:
./mvnw quarkus:dev
./mvnw quarkus:devCopy to Clipboard Copied! Toggle word wrap Toggle overflow 打开终端窗口并发送请求到
/greeting端点:curl http://localhost:8080/greeting
curl http://localhost:8080/greetingCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证您的应用程序是否已读取自定义配置并返回预期信息:
hello world 1234
hello world 1234Copy to Clipboard Copied! Toggle word wrap Toggle overflow