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.InMemoryConfigSourceProvider
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建实现
org.eclipse.microprofile.config.spi.ConfigSource
接口的InMemoryConfigSource
类:Example
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.InMemoryConfigSourceProvider
Copy 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:dev
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要验证
/greeting
端点是否返回预期的消息,请打开终端窗口并输入以下命令:请求示例
curl http://localhost:8080/greeting
curl http://localhost:8080/greeting
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 当应用程序成功读取自定义配置时,命令会返回以下响应:
hello world 1234
hello world 1234
Copy to Clipboard Copied! Toggle word wrap Toggle overflow