Spring将动态生成的值放入占位符

时间:2014-05-22 22:50:43

标签: java spring spring-mvc spring-integration mqtt

我是Spring的新手。我现在知道如何使用占位符从属性文件中读取值:

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:properties.txt"/>
</bean>

<int-mqtt:outbound-channel-adapter id="mqtt-publish"
        client-id="${clientID}"
        client-factory="clientFactory"
        auto-startup="true"
        url="${url}"
        default-qos="${qos}"
        default-retained="${retain}"
        default-topic="${topic}" />

使用上面的代码一切正常......但是......例如,是否可以通过在运行时(或从用户输入)生成的内容替换clientID,而不是从属性文件中静态读取它?

1 个答案:

答案 0 :(得分:1)

在运行时,你的意思是动态地为每条消息吗?

在这种情况下,不,因为在建立连接时使用clientId,这一次完成(或者当与服务器的连接丢失时)。

如果您想在应用程序上下文初始化时以编程方式提供动态值,那么,是的,Spring Expression Language就是解决方案。

例如,#{myBean.myProperty}将调用bean getMyProperty()上的myBean方法,#{myBean.someMethod()}将调用someMethod()

另请参阅dynamic-ftp示例,该示例在运行时通过在子应用程序上下文中使用属性占位符按需创建新的出站适配器来使用占位符。