如何在Spring @Value批注中正确指定默认值? [英] How to correctly specify a default value in the Spring @Value annotation?

查看:238
本文介绍了如何在Spring @Value批注中正确指定默认值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

最初,我具有以下规格:

Initially, I have the following spec:

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

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

This works fine correctly getting the value from the property file:

isFPL = true

但是,以下具有默认值的表达式会导致错误:

However, the following expression with default results in the error:

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

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

我也尝试使用$代替#.

I also tried to use $ instead of #.

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

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

Then the default value in annotation works fine but I did not get the correct value from the Properties file:

推荐答案

尝试使用$如下:

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

还要确保将ignore-resource-no-found设置为 true ,这样,如果缺少属性文件,则将采用 default 值.

Also make sure you set the ignore-resource-no-found to true so that if the property file is missing, the default value will be taken.

如果使用基于XML的配置,请在上下文文件中放置以下内容:

Place the following in the context file if using XML based configuration:

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

如果使用Java配置:

If using Java configurations:

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

    return p;
 }

这篇关于如何在Spring @Value批注中正确指定默认值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆