加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-14 16:23:08 所属栏目:Java 来源:网络整理
导读:最初我有以下规范: @Value("#{props.isFPL}")private boolean isFPL=false; 这样可以正确地从属性文件获取值: isFPL = true 但是,默认情况下,下面的表达式会导致错误: @Value("#{props.isFPL:false}")private boolean isFPL=false; 表达式解析失败;嵌套异
最初我有以下规范:
@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;
 }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读