我正在尝试验证单独的@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容器设置,因此我无法对其进行控制。
答案 0 :(得分:0)
为解决此问题,我将SqsFifoStarterProperties类移为SqsProducerStarterProperties类中的静态类,然后进行了自定义注释以验证属性。