【问题标题】:Spring Cloud Dataflow UI Not Rendering Whitelisted PropertiesSpring Cloud Dataflow UI 不呈现白名单属性
【发布时间】:2018-03-23 19:21:08
【问题描述】:

我在本地运行 Spring Cloud DataFlow v1.3.1.RELEASE,我创建了一个小型示例“处理器”应用程序来说明我看到的情况。

Boot 应用程序有两个@ConfigurationProperties 类:

DemoApplicationProperties:

@ConfigurationProperties
@Validated
public class DemoApplicationProperties {

    /**
     * The first name of the person. 
     */
    private String firstName;
    /**
     * The last name of the person.
     */
    private String lastName;

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

}

和 DemoApplicationPropertiesTwo:

@ConfigurationProperties
@Validated
public class DemoApplicationPropertiesTwo {

    /**
     * The person's middle name.
     */
    private String middleName;
    /**
     * The date of birth.
     */
    private String birthdate;

    public String getMiddleName() {
        return middleName;
    }

    public void setMiddleName(String middleName) {
        this.middleName = middleName;
    }

    public String getBirthdate() {
        return birthdate;
    }

    public void setBirthdate(String birthdate) {
        this.birthdate = birthdate;
    }

}

我还包含一个单元测试,以确保 BootApplicationConfigurationMetadataResolver 正确解析所有列入白名单的类。

public class WhiteListTests {

    private BootApplicationConfigurationMetadataResolver metadataResolver; 

    @Test
    public void testMetadataResolver() {
        metadataResolver = new BootApplicationConfigurationMetadataResolver(this.getClass().getClassLoader()); 

       Resource app = new FileSystemResource(".\\target\\classes\\");

       List<ConfigurationMetadataProperty> list = metadataResolver.listProperties(app); 

       for(ConfigurationMetadataProperty listItem : list) { 
           StringBuilder sb = new StringBuilder(); 
           sb.append(listItem.getId() + ": " + listItem.getName() + " :: " + listItem.getType());
           System.out.println(sb.toString());
       }
    }
}

单元测试的输出如预期:

birthdate: birthdate :: java.lang.String
middle-name: middle-name :: java.lang.String
first-name: first-name :: java.lang.String
last-name: last-name :: java.lang.String

但是,当我在 Spring Cloud Dataflow 中将 Boot 应用程序注册为“处理器”并检查注册的应用程序时,UI 仅部分呈现发现的列入白名单的属性:

我有一个项目源代码的 ZIP 文件,但由于某种原因,无法弄清楚如何在此处附加。

【问题讨论】:

标签: spring-cloud-dataflow


【解决方案1】:

文件spring-configuration-metadata-whitelist.properties里面有没有在属性中添加这两个类?

例子

configuration.classes = org.springframework.cloud.stream.app.file.sink.FileSinkProperties

com.anotherpackage.MainConfig.java

【讨论】:

  • 是的。我确实在我的白名单属性文件中包含了这两个类。
【解决方案2】:

两个属性类必须spring-configuration-metadata-whitelist.properties 文件中声明。然后,Shell、Dashboard 和 REST 端点应该能够一致地生成结果。

这是action 中的相同示例。

【讨论】:

  • 这里是我的sping-configuration-metadata-whitelist.properties文件的内容:configuration-properties.classes=com.example.demo.DemoApplicationProperties,com.example.demo.DemoApplicationPropertiesTwo
  • 看起来不错。它应该能够按原样工作。是resources/META-INF 文件夹下的文件吗?如果是的话,如果您可以将其与 Dropbox 或其他地方共享,我愿意审核该项目。
  • 另外,请检查最新的提交here。如果有 >1 个属性类,则必须确保它们具有不同的前缀。 O'wise,最后一个属性类获胜。
猜你喜欢
  • 2021-04-06
  • 2018-07-10
  • 1970-01-01
  • 1970-01-01
  • 2020-11-18
  • 1970-01-01
  • 1970-01-01
  • 2019-05-05
  • 1970-01-01
相关资源
最近更新 更多