Mel*_*ius 5 java spring dependency-injection
我正在使用 sprin 版本 4.3.8.RELEASE。我也使用@Value从属性文件注入值,如果属性是字符串那没问题,但如果属性Integer是一个问题(我知道有很多关于这个的问题,我尝试了所有的答案,但问题仍然存在)
该物业是
CONNECTION.TIME.OUT=100000
Run Code Online (Sandbox Code Playgroud)
第一个解决方案
@Value("${CONNECTION.TIME.OUT}")
protected Integer connectionTimeOut;
Run Code Online (Sandbox Code Playgroud)
例外
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}"
Run Code Online (Sandbox Code Playgroud)
第二种解决方案
@Value("#{new Integer('${CONNECTION.TIME.OUT}')}")
protected Integer connectionTimeOut;
Run Code Online (Sandbox Code Playgroud)
例外
EL1003E: A problem occurred whilst attempting to construct an object of type 'Integer' using arguments '(java.lang.String)'
Run Code Online (Sandbox Code Playgroud)
第三种解决方案
@Value("#{new Integer.parseInteger('${CONNECTION.TIME.OUT}')}")
protected Integer connectionTimeOut;
Run Code Online (Sandbox Code Playgroud)
例外
EL1003E: A problem occurred whilst attempting to construct an object of type 'Integer' using arguments '(java.lang.String)'
Run Code Online (Sandbox Code Playgroud)
任何想法为什么会这样
小智 7
为了避免这种由于属性不可用而发生异常的情况,在标签中添加默认值。如果属性不可用,则它将填充默认值
@Value("${CONNECTION.TIME.OUT:10}")
Run Code Online (Sandbox Code Playgroud)
因为@Value("${CONNECTION.TIME.OUT}")你的错误是java.lang.NumberFormatException: For input string: "${CONNECTION.TIME.OUT}". 这意味着未处理表达式,导致Integer.parseInt("${CONNECTION.TIME.OUT}")抛出NumberFormatException.
PropertyPlaceholderConfigurerSpring 上下文中没有注册任何 bean 并且@Value注释没有被处理,或者没有CONNECTION.TIME.OUT定义属性。
| 归档时间: |
|
| 查看次数: |
11447 次 |
| 最近记录: |