SpringBoot:EL1003E属性值强制转换

时间:2017-09-15 10:53:56

标签: spring spring-mvc spring-boot properties-file spring-el

我有一个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

2 个答案:

答案 0 :(得分:2)

想象一下,你有以下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

自动完成的新整数

答案 1 :(得分:1)

只需使用:

@Value("${db.minimum.idle}")
private Integer dbMinimumIdle;

无需使用spel显式实例化新整数。