@Value布尔值返回值为“ true”的“无效布尔值”

时间:2019-06-26 14:56:17

标签: java spring spring-boot annotations

我正在尝试从属性文件中简单地获取值,像这样的布尔值false

@PropertySource("classpath:/conf/default/server.properties")
........
@Value("${startup.notify.enabled}")
private boolean enabled;

在属性文件中:

startup.notify.enabled=true

为什么会出现此错误?

Caused by: java.lang.IllegalArgumentException: Invalid boolean value [${startup.notify.enabled}]
    at org.springframework.beans.propertyeditors.CustomBooleanEditor.setAsText(CustomBooleanEditor.java:123)
    at org.springframework.beans.TypeConverterDelegate.doConvertTextValue(TypeConverterDelegate.java:464)
    at org.springframework.beans.TypeConverterDelegate.doConvertValue(TypeConverterDelegate.java:437)
    at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:195)
    at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:125)
    at org.springframework.beans.TypeConverterSupport.doConvert(TypeConverterSupport.java:61)

是否可以使用占位符"${startup.notify.enabled}"

1 个答案:

答案 0 :(得分:2)

@Value("#{new Boolean('${startup.notify.enabled}')}")

像魅力一样工作

编辑

如果您在与@Value一起使用的其他int,String等字段上遇到麻烦,请确保您的配置文件中有PropertySourcesPlaceholderConfigurer

@Bean
public static PropertySourcesPlaceholderConfigurer pspc() {
    return new PropertySourcesPlaceholderConfigurer();
}