1

我有 de 供应商的配置属性:

@Data
@NoArgsConstructor
@ConfigurationProperties("sybase.supplier")
public class SybaseSupplierProperties {
    private short canal = 0;
    private int pollSize = 10;
}

我将它注入应用程序:

@SpringBootApplication
@EnableConfigurationProperties(SybaseSupplierProperties.class)
public class SybaseSupplier {

    private final DataSource dataSource;
    private final SybaseSupplierProperties properties;

    @Autowired
    public SybaseSupplier(DataSource dataSource,
                          SybaseSupplierProperties properties) {
        this.dataSource = dataSource;
        this.properties = properties;
    }
}

我有生成它的 Maven 依赖项:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-configuration-processor</artifactId>
        <optional>true</optional>
    </dependency>

它生成为 spring-configuration-metadata.json

{
  "groups": [
    {
      "name": "sybase.supplier",
      "type": "br.com.clamed.daflow.apps.sybasesupplier.SybaseSupplierProperties",
      "sourceType": "br.com.clamed.daflow.apps.sybasesupplier.SybaseSupplierProperties"
    }
  ],
  "properties": [
    {
      "name": "sybase.supplier.canal",
      "type": "java.lang.Short",
      "sourceType": "br.com.clamed.daflow.apps.sybasesupplier.SybaseSupplierProperties",
      "defaultValue": 0
    },
    {
      "name": "sybase.supplier.poll-size",
      "type": "java.lang.Integer",
      "sourceType": "br.com.clamed.daflow.apps.sybasesupplier.SybaseSupplierProperties",
      "defaultValue": 10
    }
  ],
  "hints": []
}

应用程序属性

spring.cloud.stream.function.bindings.intControleSupplier-out-0=output
spring.cloud.function.definition=intControleSupplier

内部 maven repo 已注册。

应用程序已导入:

app register --name jdbc-sybase-supplier --type source --uri maven://br.com.clamed.cloud.dataflow.apps:jdbc-sybase-supplier:1.0.0-SNAPSHOT

当我使用它时,属性不显示:

在此处输入图像描述

为什么?

4

1 回答 1

1

当 SCDF 服务器检索应用程序属性时,并非所有属性spring-configuration-metadata.json都可用。这是limit在 UI 上加载的属性数量。但这并不意味着您不能将这些属性设置为应用程序属性。只是这些属性将在 SCDF Web UI 和 shell 完成中作为应用程序属性供您选择。

在您的情况下,为了使您SybaseSupplierProperties 可用,您需要添加一个数据流配置文件,该文件指定 SCDF 在加载应用程序时可以检索哪些属性。

您要么需要指定spring-configuration-metadata-whitelist.properties(在最近的版本中已弃用),要么dataflow-configuration-metadata-whitelist.properties在内部指定classpath*:/META-INF/要作为应用程序配置属性包含的属性类名称。

例如,在您的情况下,您需要以下内容/META-INF/dataflow-configuration-metadata-whitelist.properties

configuration-properties.classes=br.com.clamed.daflow.apps.sybasesupplier.SybaseSupplierProperties

您还可以在此处查看有关此的文档

于 2020-07-29T05:15:23.623 回答