对于Java,使用https://github.com/lightbend/config配置:
djobi {
plugins {
logger {
enabled=true
class="io.djobi.plugins.logging.LoggingPlugin"
}
apm {
enabled=true
class="io.djobi.plugins.apm_opentracing.APMOpenTracingPlugin"
}
}
}
我想遍历插件配置图,如下所示:
final ConfigObject config = this.configuration.getObject("djobi.plugins");
config.forEach((key, subConfig) -> {
final boolean enabled = this.configuration.getBoolean("djobi.plugins." + key + ".enabled");
if (enabled) {
final String clazz = this.configuration.getString("djobi.plugins." + key + ".class");
logger.info("Load plugin " + key);
....
}
});
如何替换```js this.configuration.getBoolean("FULL_PATH..为subConfig.getBoolean("enabled")?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在Java中使用Lightbend Config库遍历配置并访问子配置的属性时,可以直接从ConfigObject
实例中获取值,而不需要每次都通过全路径去this.configuration
中获取。你的代码可以修改如下:
final ConfigObject configPlugins = this.configuration.getObject("djobi.plugins");
configPlugins.forEach((key, subConfig) -> {
// 直接从subConfig获取enabled和class属性
final boolean enabled = subConfig.getBoolean("enabled");
final String clazz = subConfig.getString("class");
if (enabled) {
logger.info("Load plugin " + key);
// ... 在这里加载或执行与插件相关的逻辑 ...
}
});
这段代码中,我们直接在forEach循环里使用了subConfig
来获取enabled
和class
属性,这样就避免了重复拼接全路径字符串。这样做不仅让代码更简洁,也提高了效率。