SpringBoot:EL1003E 属性值转换
Posted
技术标签:
【中文标题】SpringBoot:EL1003E 属性值转换【英文标题】:SpringBoot: EL1003E property values casting 【发布时间】:2018-02-24 13:06:36 【问题描述】:我有一个包含以下值的 Spring Boot 配置文件:
@Value("#new Integer('$db.pool.size')")
private Integer dbPoolSize;
@Value("#new Integer('$db.minimum.idle')")
private Integer dbMinimumIdle;
但是当我启动应用程序时,我得到了这个错误:
Caused by: org.springframework.expression.spel.SpelEvaluationException: EL1003E: A problem occurred whilst attempting to construct an object of type 'Integer' using arguments '(java.lang.String)'
at org.springframework.expression.spel.ast.ConstructorReference.createNewInstance(ConstructorReference.java:168) ~[spring-expression-4.3.6.RELEASE.jar:4.3.6.RELEASE]
at org.springframework.expression.spel.ast.ConstructorReference.getValueInternal(ConstructorReference.java:98) ~[spring-expression-4.3.6.RELEASE.jar:4.3.6.RELEASE]
at org.springframework.expression.spel.ast.SpelNodeImpl.getValue(SpelNodeImpl.java:120) ~[spring-expression-4.3.6.RELEASE.jar:4.3.6.RELEASE]
at org.springframework.expression.spel.standard.SpelExpression.getValue(SpelExpression.java:242) ~[spring-expression-4.3.6.RELEASE.jar:4.3.6.RELEASE]
at org.springframework.context.expression.StandardBeanExpressionResolver.evaluate(StandardBeanExpressionResolver.java:161) ~[spring-context-4.3.6.RELEASE.jar:4.3.6.RELEASE]
... 42 common frames omitted
【问题讨论】:
【参考方案1】:假设您有以下 application.properties:
db.minimum.idle=12
db.pool.size=10
那么你应该这样做:
@Value("$db.pool.size")
private Integer dbPoolSize;
@Value("$db.minimum.idle")
private Integer dbMinimumIdle;
你不必创建一个新的整数,这是由 spring 自动完成的
【讨论】:
【参考方案2】:只需使用:
@Value("$db.minimum.idle")
private Integer dbMinimumIdle;
无需使用 spel 显式实例化新整数。
【讨论】:
以上是关于SpringBoot:EL1003E 属性值转换的主要内容,如果未能解决你的问题,请参考以下文章
CF1003E Tree Constructing 构造+数论
elemen-table表格数据转换-formatter属性