是否可以根据其他属性值使用spring属性验证?
我无法使用@ConditionalOnProperty
因为该属性在很多地方使用。我不能只为每个bean添加@ConditionalOnProperty
。
这就是我所拥有的:
@ConfigurationProperties
public class Property1 {
boolean property2Enabled
}
@ConfigurationProperties
public class Property2 {
@NotNull
@Size(min = 1)
String thisShouldBeValidated;
}
在这种情况下,仅当thisShouldBeValidated
的值为property2Enabled
时才应用true
的验证。
是否可以使用一些弹簧注释来执行此操作?
如果我写一个自定义验证,我可以以某种方式得到property2Enabled
的价值吗?
答案 0 :(得分:2)
尝试可以应用于@Bean方法的Spring 4 @Conditional注释。
import org.springframework.context.annotation.Condition;
@ConfigurationProperties
public class Property1 implements Condition{
boolean property2Enabled;
@Override
public boolean matches()
return property2Enabled;
}
}
只有当property2Enabled的值为true时,才应该使用thisShouldBeValidated。否则忽略它。
import org.springframework.context.annotation.Condition;
public class Property2 {
@NotNull
@Size(min = 1)
String thisShouldBeValidated;
@Bean
@Conditional(Property1.class)
void Property2 yourMethod() {
system.out.println("whatever"+ thisShouldBeValidated);
}
}
如您所见,@Conditional
被赋予一个指定条件的类 - 在本例中为Property1
。
赋给@Conditional
的类可以是实现条件的任何类型
接口强>