java - SpEL Spring中的三元运算符
问题描述
我有以下表达式:
<bean class="java.net.InetAddress" id="inetAddress" />
<bean id="dataSource"
class="org.apache.tomcat.jdbc.pool.DataSource"
p:driverClassName="org.postgresql.Driver"
p:url="#{'jdbc:postgresql://' + inetAddress.getLocalHost().getHostName()=='alex-HP-290-G1-SFF-Business-PC'?'localhost':'172.18.0.2' + ':5432/infostock'}"/>
这个表达
inetAddress.getLocalHost().getHostName()=='alex-HP-290-G1-SFF-Business-PC'?'localhost':'172.18.0.2'
必须将主机名值(从 getHostName 检索)与“alex-HP-290-G1-SFF-Business-PC”进行比较。如果为真,则返回“localhost”,否则返回“172.18.0.2”。
主机名的实际值为“alex-HP-290-G1-SFF-Business-PC”。我从:
System.out.println(InetAddress.getLocalHost().getHostName());
所以,三元运算符必须返回 'localhost'
但它返回“172.18.0.2”。
解决方案
我找到了这个解决方案:
p:url="#{inetAddress.getLocalHost().getHostName().equals('andrej-HP-290-G1-SFF-Business-PC')?'jdbc:postgresql://localhost:5432/infostock':'jdbc:postgresql://172.18.0.2:5432/infostock'}"
但它太长了,我想,它不是最佳的
推荐阅读
- linux - 在终端中获取上一个命令的第一个单词的快捷方式
- shell - Chocolately `Get-ExecutionPolicy` - 未捕获的 ReferenceError:未定义获取
- azure - 使用客户端密码检索 Azure KeyVault 密码
- redux - Redux 中 mapStateToProps 接收到的状态
- amazon-web-services - 如何在 K8s 中获取给定 pod-name 和命名空间名称的 pod 的日志记录级别?
- java - 如何扫描网格并逐行汇总网格中填充空间的数量并单独添加它们
- discord - 如何从 Discord 机器人的 API 发送图像?
- r - 如何映射嵌套数据框,并将多列存储为输出
- python - 在 Python 字典中对值进行排序
- docker - 了解 Hyperledger Fabric 中的 Docker 容器内部结构