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

时间:2017-05-30 16:18:11

标签: spring-cloud spring-cloud-stream spring-cloud-dataflow

基于Spring Cloud Data Flow(SCDF)的文档,仅以“已部署”为前缀的属性。或“app。”在将应用程序(可以是源,处理器或接收器)部署为流的一部分时,会考虑这些内容。

但是,我注意到除了前缀之外,所有属性都必须作为“字符串”提供,无论它们的原始类型是什么;否则,根据这行代码,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”,它会过滤掉任何未作为“字符串”提供的内容。

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

感谢您的支持。

1 个答案:

答案 0 :(得分:2)

根据部署者SPI设置的contract,所有部署属性都应为http://localhost:8080/employee?ids=1&ids=2&ids=3 http://localhost:8080/employee?ids=1,2

我相信其中一个原因就是拥有String键,将值传递给目标部署平台而不会出现序列化/反序列化障碍。并且,使用String值类似于如何在目标部署平台中将这些键值属性设置为环境变量(例如)。