2017-09-15 166 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所做彈簧