我已经按照doc中的建议进行了更改:https://helidon.io/docs/v2/#/mp/config/02_MP_config_sources但它无法识别新的配置源,并给出以下错误:不支持test-config-provider类型的配置源`
以下是我为添加新的自定义配置源所做的更改:
1.创建了实现MpMetaConfigProvider的MyConfigProvider类
1.创建了实现ConfigSource的类MyConfigSource
- MyConfigProvider::create()和supportedTypes()
public static final String TYPE = "test-config-provider";
@Override
public List<? extends ConfigSource> create(String s, Config config, String s1) {
Map<String, String> result = new HashMap<String, String>();
ConfigSource configSource = new MyConfigSource(result);
return Collections.singletonList(configSource);
}
@Override
public Set<String> supportedTypes() {
return Set.of(TYPE);
}
1.在resources/META-INF中,添加了services/io.helidon.config.mp.spi.MpMetaConfigProvider文件。在文件中添加了MyConfigProvider的文件包路径,即<package_name>MyConfigProvider
1.文件:'mp-meta-config.yaml' contents add-discovered-sources:真正的add-discovered-converters:false add-default-sources:真
来源:
- type:“环境变量”
- 类型:“系统属性”
- 类型:“测试配置提供程序”
1.在main()函数中,我们创建Config示例并将其传递给Server builder()
public class Main {
private static final String DEFAULT_CONFIG_FILE = "mp-meta-config.yaml";
public static void main(final String\[\] args) {
Config config = buildHelidonConfig();
Server server = startServer1(config);
//Server server = startServer2();
}
private static Config buildHelidonConfig() {
return MetaConfig.config(Config.create(getSources()));
}private static Supplier<? extends ConfigSource>[] getSources() {
return new Supplier[] {
classpath(DEFAULT_CONFIG_FILE).build()
};
}
public static Server startServer1(Config config) {
return Server
.builder()
.config(config)
.build()
.start();
}
}
但它无法识别新的配置源,并给出以下错误:
不支持test-config-provider类型的配置源
1条答案
按热度按时间oalqel3c1#
io.helidon.config.Config
和org.eclipse.microprofile.config.Config
是不同的API。Helidon提供了一个MicroProfile Config的实现,它具有以下Maven依赖项
io.helidon.config:helidon-config-mp
。你可以创建一个这样的示例:
Helidon还在其MicroProfile Config的实现中提供了一些SPI,其中之一是
io.helidon.config.mp.spi.MpMetaConfigProvider
。当使用上述方法创建MicroProfile示例时,将使用
MpMetaConfigProvider
的实现。Helidon还提供了一个桥梁来创建由
io.helidon.config.Config
支持的MicroProfile Config示例。上面的代码不会使用
MpMetaConfigProvider
的实现。为了让你的代码能够实现
MpMetaConfigProvider
,你可以:ConfigProvider.getConfig()
创建的示例中使用Server.Builder(org.eclipse.microprofile.config.Config)
代替Server.Builder(io.helidon.config.Config)