具有字符串连接的Spring属性占位符

use*_*506 6 java spring properties

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

示例config.properties:

dev.maxLength=2000  
qa.maxLength=4000
Run Code Online (Sandbox Code Playgroud)

我们有一个父属性文件,它包含主机名,环境映射.

示例hosts.properties:

host1=dev
host2=qa
Run Code Online (Sandbox Code Playgroud)

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

<bean id="hostname"
  factory-bean="localhostInetAddress"
  factory-method="getHostName"/> 
Run Code Online (Sandbox Code Playgroud)

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

我尝试使用SpEL但没有成功.我得到了Could not resolve placeholder例外.如何在属性占位符中连接bean值?如何构建动态属性名称?

春季版3.2

Gha*_*ost 15

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

<bean id="myService" class=""com.services.MyService">
  ...
  <property name="endpointAddress" value="#{'${server}' + ':' + '${port}' + '${endpoint}'}" />
</bean>
Run Code Online (Sandbox Code Playgroud)

哪里:

server = http://domain.host.com

port = 7777

endpoint =/services/myservice

结果将是:

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


use*_*506 3

PropertyPlaceholderConfigurer我通过将beans更改为 解决了这个问题Properties<util:properties/>可以在 SpEL 中访问。

例子: "#{prop[host+'.'+'maxLength']}"

host四季豆在哪里。