为什么 Spring Cloud Dataflow 供应商属性没有出现?

Why Spring Cloud Dataflow Supplier properties does not appear?

我有供应商的配置属性:

@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-配置-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": []
}

application.properties

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

内部 Maven 存储库已注册。

应用已导入:

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

我用的时候属性不显示:

为什么?

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

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

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

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

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

您还可以查看有关此 here

的文档