我使用的是sprin版本4.3.8.RELEASE。我还使用@Value
从属性文件中注入值,如果属性是字符串,则没有问题,但如果属性是Integer
,则有问题(我知道有很多关于此问题的问题,我尝试了所有答案,但问题仍然存在)
该属性为
CONNECTION.TIME.OUT=100000
第一个解决方案
@Value("${CONNECTION.TIME.OUT}")
protected Integer connectionTimeOut;
满意
Failed to convert value of type 'java.lang.String' to required type 'java.lang.Integer'; nested exception is java.lang.NumberFormatException: For input string: "${CONNECTION.TIME.OUT}"
第二个解决方案
@Value("#{new Integer('${CONNECTION.TIME.OUT}')}")
protected Integer connectionTimeOut;
例外
EL1003E: A problem occurred whilst attempting to construct an object of type 'Integer' using arguments '(java.lang.String)'
第三种解决方案
@Value("#{new Integer.parseInteger('${CONNECTION.TIME.OUT}')}")
protected Integer connectionTimeOut;
例外
EL1003E: A problem occurred whilst attempting to construct an object of type 'Integer' using arguments '(java.lang.String)'
知道为什么吗
5条答案
按热度按时间sd2nnvve1#
为了避免由于属性不可用而发生异常的情况,请在标记中添加默认值。如果属性不可用,则将填充默认值
wvyml7n52#
您的属性文件可能未正确加载。
如果没有为属性占位符提供有效的值,Spring会自动尝试将该值赋给
@Value
注解的名称。在您的情况下,这是:解释为:
这确实带来了一个错误。
尝试在bean中配置一个
PropertyPlaceholderConfigurer
,或者确保通过配置将属性文件正确加载到类路径中。在您的配置文件中将有帮助,在这种情况下。
h9a6wy2h3#
对于
@Value("${CONNECTION.TIME.OUT}")
,您的错误为java.lang.NumberFormatException: For input string: "${CONNECTION.TIME.OUT}"
。这意味着未处理表达式,导致Integer.parseInt("${CONNECTION.TIME.OUT}")
,从而引发NumberFormatException
。Spring上下文中未注册
PropertyPlaceholderConfigurer
Bean,并且未处理@Value
注解,或者未定义CONNECTION.TIME.OUT
属性。zqdjd7g94#
试着去掉单引号“”。对我很有效。
@Values (“#{新整数(${连接时间输出})}”)
toe950275#
别忘了它周围的“${}”!我一直在看本应该很明显的东西,却错过了它。