如 Quarkus documentation 中所述,可以使用读取配置值
String databaseName = ConfigProvider.getConfig().getValue("database.name", String.class);
Optional<String> maybeDatabaseName = ConfigProvider.getConfig().getOptionalValue("database.name", String.class);
是否有可能在运行时设置应用程序属性?
我想在应用程序启动期间设置 quarkus.hibernate-orm.database.default-schema 。这应该以编程方式发生(在 Java 代码中),因此无需从外部定义属性。
最佳答案
是的,这是可能的。
例如,您可以添加:
package org.acme.config;
import org.eclipse.microprofile.config.spi.ConfigSource;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class InMemoryConfigSource implements ConfigSource {
private static final Map<String, String> configuration = new HashMap<>();
static {
configuration.put("my.prop", "1234");
}
@Override
public int getOrdinal() {
return 275;
}
@Override
public Set<String> getPropertyNames() {
return configuration.keySet();
}
@Override
public String getValue(final String propertyName) {
return configuration.get(propertyName);
}
@Override
public String getName() {
return InMemoryConfigSource.class.getSimpleName();
}
}
在您的代码中,通过添加 src/main/resources/META-INF/services/org.eclipse.microprofile.config.spi.ConfigSource
,使用 Java 的服务加载器机制让 Quarkus 知道它> 文件包含:
org.acme.config.InMemoryConfigSource
。
参见this指南了解更多详细信息。
关于quarkus - 有没有办法以编程方式覆盖应用程序属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72110212/