2017-09-15 163 views
1

我有这个值的春天启动配置文件:SpringBoot:EL1003E属性值铸造

@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

只需使用:

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

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

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; 

您不必创建一个新的整数,即automacally所做弹簧