java – 如何在Spring @Value注释中正确指定默认值?

前端之家收集整理的这篇文章主要介绍了java – 如何在Spring @Value注释中正确指定默认值?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
最初我有以下规范:
@Value("#{props.isFPL}")
private boolean isFPL=false;

这样可以正确地从属性文件获取值:

isFPL = true

但是,默认情况下,下面的表达式会导致错误

@Value("#{props.isFPL:false}")
private boolean isFPL=false;

表达式解析失败;嵌套异常是org.springframework.expression.spel.SpelParseException:EL1041E:(pos 28):解析有效的表达式后,表达式中还有更多数据:’colon(:)’

我也试图用$而不是#.

@Value("${props.isFPL:true}")
private boolean isFPL=false;

然后注释中的默认值工作正常,但没有从属性文件获取正确的值:

解决方法

尝试$如下
@Value("${props.isFPL:true}")
private boolean isFPL=false;

还要确保将ignore-resource-no-found设置为true,以便如果属性文件丢失,则将采用默认值.

另外,将以下内容放在 –

上下文文件如果使用基于xm的配置:

<context:property-placeholder ignore-resource-not-found="true"/>

在配置类中如果使用Java配置:

@Bean
 public static PropertySourcesPlaceholderConfigurer   propertySourcesPlaceholderConfigurer() {
     PropertySourcesPlaceholderConfigurer p =  new PropertySourcesPlaceholderConfigurer();
     p.setIgnoreResourceNotFound(true);

    return p;
 }

猜你在找的Java相关文章