1.10. 设置自定义配置源
默认情况下,Quarkus 应用从项目的 src/main/resources 子目录中的 application.properties 文件中读取属性。通过 Quarkus,您可以根据用于外部配置的 MicroProfile 配置规范从其他来源加载应用配置属性。您可以通过定义实现 org.eclipse.microprofile.config. spi.ConfigSource 和 org.eclipse.microprofile 的类,从其他来源加载配置属性。此流程演示了如何在 Quarkus 项目中实施自定义配置源。
.config.spi.ConfigSource
前提条件
您有 Quarkus config-quickstart 项目。
流程
在项目中创建一个类文件,它将实施
org.eclipse.microprofile.config.spi.ConfigSourceProvider接口。要返回ConfigSource对象列表,您必须覆盖getConfigSources ()方法。Example
org.acme.config.InMemoryConfigSourceProviderCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建实现
org.eclipse.microprofile.config.spi.ConfigSource接口的InMemoryConfigSource类:Example
org.acme.config.InMemoryConfigSourceCopy 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