如何在单独的类中验证两个字段?

时间:2019-09-26 14:27:39

标签: java spring

我正在尝试验证单独的@ConfigurationProperties类中的两个字段。这些类中的属性由spring容器设置。由于应用程序设计的原因,我无法合并这两个类。如何实现此验证?

我尝试使用Observer模式,以便在其他类中通知这些类中的更改,然后可以进行验证,但Observer模式适用于一对多而不是多对一

尝试验证multipleQueuesEnabled是否设置为false,则url不应为null,而urls应为null。而且,如果multipleQueuesEnabled设置为true,则urls不应为null,url应为null。

第一个属性类:-

@ConfigurationProperties(prefix = "aws.sqs")
@Validated
public class SqsProducerStarterProperties

    @NotNull
    private boolean multipleQueuesEnabled;


    public boolean isMultipleQueuesEnabled() {
        return multipleQueuesEnabled;
    }

    public void setMultipleQueuesEnabled(boolean multipleQueuesEnabled) {

        this.multipleQueuesEnabled = multipleQueuesEnabled;
    }

}

第二个属性类:-

@ConfigurationProperties(prefix = "aws.sqs.fifo")
@Validated
public class SqsFifoStarterProperties {

    private Map<String, String> urls;

    private String url;

    @Override
    public Map<String, String> getUrls() {
        return urls;
    }

    public void setUrls(Map<String, String> urls) {
        this.urls = urls;
    }

    @Override
    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
       this.url = url;
    }
}

关于如何在上述情况下进行验证的任何想法。属性将由spring容器设置,因此我无法对其进行控制。

1 个答案:

答案 0 :(得分:0)

为解决此问题,我将SqsFifoStarterProperties类移为SqsProducerStarterProperties类中的静态类,然后进行了自定义注释以验证属性。