如果我在bean中得到一个空值,我想问一下如何处理一个案例。
场景是我有一个加载属性文件并将新属性(我刚刚添加)存储到myProp
值的弹簧:
<bean id="ConfigurationUtility" class="configuration.ConfigurationUtility">
<property name="UntilTimeInQuote" value="myProp"/>
</bean>
当属性设置为true
或false
时,一切正常并且符合预期。但是,我想处理属性文件中根本不存在该属性的情况,这意味着它得到null
。
如何在代码中捕获该状态并处理?
答案 0 :(得分:0)
您可以将属性定义为布尔对象,并在setter中处理该值。通过这种方式,您可以在spring设置值时管理值。
public class MyBean{
private Boolean untilTimeInQuote;
public setUntilTimeInQuote(Boolean value){
if(value == null){
//do something.
}else{
// do something else.
}
}
}
另一种选择是使用bean后处理器操作,在创建bean之后和设置属性之后触发它。
public class MyBean{
private Boolean untilTimeInQuote;
@PostConstruct
public void init(){
if(untilTimeInQuote == null){
//do something.
}else{
// do something else.
}
}
public setUntilTimeInQuote(Boolean value){
this.untilTimeInQuote = value
}
}
}
你可以在这里看到更多 https://www.mkyong.com/spring/spring-postconstruct-and-predestroy-example/
答案 1 :(得分:0)
如果您正在使用@Value
将属性注入到类中,那么如果属性文件没有指定属性,则可以提供默认值:
public class MyClass {
@Value("${myProperty:false}")
private boolean myProperty;
@Value("${serverUrl:localhost}")
private String serverUrl;
}
现在
myProperty
将为false
。serverUrl
将为localhost
。我喜欢这样:没有&#34;处理&#34;必要 - 只需使用默认值。
答案 2 :(得分:0)
关于bean validation的整整一章。
特别是,如果您声明BeanValidationPostProcessor
,那么您可以在类上使用注释来定义约束:
@Data
public class ConfigurationUtility {
private boolean defaultsToFalseIfMissing = false;
@NotNull
private Boolean errorsIfMissing;
@NotBlank
private String mustBeSetToSomethingPrintable;
}
注释文档: