当前位置: 首页 > 知识库问答 >
问题:

如何让SpEL添加两个数字

魏凡
2023-03-14

我想计算应用程序内的端口号。像这样的属性:

server.port=#{ 1 + ${myapp.web.server.port.ssl} }
myapp.web.server.port.ssl=8300

但当我启动Spring Boot应用程序时,我得到的只是一个执行选项。

org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type java.lang.String to type java.lang.Integer]

参考指南的数学运算符部分建议它应该工作,但事实并非如此。

在Spring内部,它甚至可以调用:

GenericConversionService.convert("#{ 1 + 8300 }", java.lang.String, java.lang.Integer)

但这里面没有逻辑来识别这是SpEL。就好像它根本没认出是斯佩尔。但是,如果我将表达式更改为#{n1${myapp.web.server.port.ssl}},则会出现以下异常,表明它被评估为SpEL:

SpelEvaluationException: EL1008E:(pos 0): Property or field 'n1' cannot be found on object of type 'org.springframework.beans.factory.config.BeanExpressionContext' - maybe not public?

如何让SpEL将一个添加到另一个属性的值中?

更新:

我发现了一个类似的问题,所以我尝试了类似的方法

server.port=#{T(java.lang.Integer).parseInt('${fire.web.server.port.ssl}')1}

但这仍然不起作用。出于某种原因,它没有将其视为SpEL表达式。但如果有语法错误,is会将其视为SpEL表达式!

共有2个答案

强志学
2023-03-14

我认为问题是${myapp.web.server.port.ssl}被评估为String,试试这样的东西

#{1 + new Integer(props['myapp.web.server.port.ssl'])}

其中,props是持有您的属性的bean。

季凡
2023-03-14

您只能从配置中执行此操作,但不能从属性中执行此操作:

<bean class="...">
   <property name="port" value="#{1 + ${myapp.web.server.port.ssl}}"/>
</bean>
 类似资料:
  • 问题内容: 我有两个数字。例如: 为什么数字不支持算术运算?无论如何,我将如何在Java中将这两个数字相加?(当然,我是从某个地方获取它们的,我不知道它们是Integer还是float等)。 问题答案: 你不知道数字是整数还是浮点数…使用该类时,编译器也不知道你的数字是整数,浮点数还是其他东西。结果,像+和-这样的基本数学运算符不起作用;计算机将不知道如何处理这些值。 开始编辑 根据讨论,我认为一

  • 问题:给您两个非空链表,表示两个非负整数。数字按相反顺序存储,每个节点包含一个数字。将这两个数字相加,并将其作为链表返回。您可以假设这两个数字不包含任何前导零,除了0本身** 示例:工作测试用例如下:-输入:(2)- 我的解决方案不适用于以下测试用例: 输入: 单链表的定义: 这就是我的解决办法

  • 下面的代码是一个按钮的方法。 它总是给我一个错误。 如果我删除,那么它可以正常工作。 当我单击按钮时,如何使用POST方法,并移动到另一个活动? 错误:04-27 19:41:26.066 197 4-1974/com.opshun_test.opshun_test e/androidruntime:致命异常:main process:com.opshun_test.opshun_test,pid

  • 我有一个关于使用LeetCode的链表添加两个数字的问题。下面是问题本身,我面临的问题,以及我的代码。 给您两个非空链表,表示两个非负整数。数字按相反顺序存储,每个节点包含一个数字。将这两个数字相加,并将其作为链表返回。 您可以假设这两个数字不包含任何前导零,除了数字0本身。 实例 输入:(2- 问题是它打印出: 当结果出现时,它停止。val为0并调用NullPointerException。我不

  • 问题内容: 我有两个,都被索引。我需要将元素添加在一起以形成一个new ,但前提是索引和列相同。如果该项不存在于之一,则应将其视为零。 我试过使用,但这无论索引和列如何。还尝试了一个简单的方法,但是如果两个数据框都没有该元素,则给出a 。 有什么建议? 问题答案: 怎么样