Spring Cloud Data Flow 应用程序中的应用程序属性

App properties in Spring Cloud Data Flow application

根据 Spring 云数据流 (SCDF) 的文档,在部署应用程序时仅考虑前缀为 "deployed." 或 "app." 的属性(无论是源、处理器或接收器)作为流的一部分。

但是,我注意到除了前缀之外,所有属性都必须以 "strings" 形式提供,无论它们的原始类型是什么;否则,它们会被 SCDF 根据这行代码简单地丢弃:

    propertiesToUse = DeploymentPropertiesUtils.convert(props);

这是做什么的:

public static Map<String, String> convert(Properties properties) {
    Map<String, String> result = new HashMap<>(properties.size());
    for (String key : properties.stringPropertyNames()) {
        result.put(key, properties.getProperty(key));
    }
    return result;
}

正如您从上面的代码片段中看到的那样,它只考虑 "stringPropertyNames" 过滤掉任何未作为 "String".

提供的内容

我认为这种行为是故意的,但为什么呢?为什么不使用正确的前缀获取用户定义的所有属性?

感谢您的支持。

根据部署程序 SPI 设置的 contract,所有部署属性都应为 Map<String, String>

我相信原因之一是有字符串键,值被传递到目标部署平台而没有 serialization/de-serialization 障碍。并且,使用字符串值类似于在目标部署平台中将这些键值属性设置为环境变量(例如)。