gpt4 book ai didi

java - 带有字符串连接的 Spring 属性占位符

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:42:48 25 4
gpt4 key购买 nike

我的问题看起来很简单,但我无法解决它。我有一个属性文件,其中包含所有环境(dev、qa、prod)的配置详细信息。

示例 config.properties:

dev.maxLength=2000  
qa.maxLength=4000

我们有一个包含主机名、环境映射的父属性文件。

示例 hosts.properties:

host1=dev
host2=qa

属性名称 host1 存储在 bean hostname 中。

<bean id="hostname"
factory-bean="localhostInetAddress"
factory-method="getHostName"/>

要解析配置属性名称,我必须按如下方式加入字符串,${${**hostname**}.maxLength} 应解析为 ${dev.maxLength}

我尝试使用 SpEL 但没有成功。我收到 Could not resolve placeholder 异常。如何在属性占位符中连接一个 bean 值?动态属性名称是如何构造的?

Spring 版本 3.2

最佳答案

要连接从 Spring 属性占位符解析的值,您需要使用单引号 ('') 转义它们的值,并使用 #{} 用 SpEL 表达式包装占位符表达式.

<bean id="myService" class=""com.services.MyService">
...
<property name="endpointAddress" value="#{'${server}' + ':' + '${port}' + '${endpoint}'}" />
</bean>

哪里:

server = http://domain.host.com

port = 7777

endpoint = /services/myservice

结果是:

http://domain.host.com:7777/services/myservice

关于java - 带有字符串连接的 Spring 属性占位符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15761619/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com