2013-02-12 39 views
6

我想通过INT,而不是这是默认的春天PropertyPlaceholderConfigurer传递INT春天财产

<property name="mailServerPort" value="${mail.port}" /> 

这给我错误,因为mailServerPort是int类型而$ {mail.port}是字符串类型。

如何将$ {mail.port}转换为int?

+1

mail.port的值是什么?你会得到什么例外? – BobTheBuilder 2013-02-12 13:08:32

+0

'如果可能的话,'Spring处理基于目标类型的转换'我忘了这个。 – Mawia 2013-02-12 13:25:51

回答

7

如果可能,Spring将基于目标类型进行转换。

你确定你设置

mail.port 

与int值?

+0

哦!非常抱歉。我在属性名称上犯了一些错误。但是,谢谢你的信息。 – Mawia 2013-02-12 13:25:14

9

根据我的说法,如果端口的值是适当的整数,铸件应该可以正常工作。

如果您遇到问题,可以尝试使用SpringExpressionLanguage(SpEL)进行转换。

<property name="mailServerPort" value="#{ T(java.lang.Integer).parseInt(mail.port) }"/> 

希望这可以帮助你。

0

Spring应该自动处理它,虽然如果它给出错误,您可以使用类型属性属性标记并提供并指定require类型。 例如

<property name="mailServerPort" type="int" value="${mail.port}" /> 

希望这有助于.. :-)

0

以上所有的答案将在工作情况下,属性值确定被提供。如果它为空,则可以使用SpringExpressionLanguage来处理该情况并提供默认值:

<property name="mailServerPort" value="#{ '${mail.port}'.isEmpty() ? '8080' : '${mail.port}' }"/>