是否可以基于其他属性值使用spring属性验证?
我不能使用@ConditionalOnProperty
,因为该属性在很多地方都使用过。我不能只为每个bean放入@ConditionalOnProperty
。
这是我所拥有的:
@ConfigurationProperties
public class Property1 {
boolean property2Enabled
}
@ConfigurationProperties
public class Property2 {
@NotNull
@Size(min = 1)
String thisShouldBeValidated;
}
在这种情况下,仅当
thisShouldBeValidated
的值为property2Enabled
时才应使用true
的验证。是否可以通过一些春季注释来做到这一点?
如果编写自定义验证,是否可以通过某种方式获取
property2Enabled
的值? 最佳答案
尝试可以应用于@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
的类可以是实现Condition的任何类型接口。