【发布时间】:2015-04-06 19:41:16
【问题描述】:
我正在使用 Spring boot 1.1.8,它使用 Spring 4.0.7。我正在使用 @Value 注释自动装配我的类中的属性。如果属性文件中不存在该属性,我希望有一个默认值,所以我使用“:”来分配默认值。下面是例子:
@Value("${custom.data.export:false}")
private boolean exportData = true;
如果属性文件中不存在属性,则它应该将 false 分配给变量。但是,如果 属性存在于文件中,那么它也会分配默认值并忽略属性值。
例如。如果我已经定义了上面提到的属性并且应用程序属性文件有类似custom.data.export=true的内容,那么exportData 的值将仍然为假,而理想情况下它应该为真。
谁能指导我在这里做错了什么?
谢谢
【问题讨论】:
-
我已经测试过了,一切正常。如果缺少属性,则采用默认值 (false)。
-
它应该可以工作。为什么你的字段用 true 初始化?!您可以添加执行器并查看 /env 端点以仔细检查配置是否已按预期应用?
-
好吧,在其中一个依赖项的深处,“ignoreUnresolvablePlaceholders”参数设置为 true。因此,spring 总是使用默认值并且从不查看 application.properties 文件。设法通过注释掉该块来解决它。谢谢。
-
@DarshanMehta,它如何在应用程序属性中设置此属性?
-
我的意思是如何在 application.propertes 中将 ignoreUnresolvablePlaceholders 设置为 false。
标签: java spring spring-boot spring-annotations