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

标签 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 替换为运行时(或用户输入)生成的内容,而不是从属性文件中静态读取它?

最佳答案

运行时,您的意思是每条消息都是动态的吗?

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

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

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

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

关于java - Spring 将动态生成的值放入占位符中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23818328/

相关文章:

java - 如何为 org.quartz.JobDetail 创建自定义编辑器?

java - 国际化(语言环境)在 java spring boot 中不使用重音符号

java - GridBagLayout 将 JTextField 和 JTextArea 显示为短垂直线

java - 有效的 Java 项目 76 : Serialization & Security - How exactly hacker gets references to the internal Date fields of immutable Period object?

java - 无法连接到 ec2 实例上的 Tomcat 服务器

java - log4j2属性为控制台和文件设置不同的阈值

java - 一台电脑上的多个akka系统

java - 使用maven的spring hibernate集成中的org.springframework.beans.factory.BeanCreationException

java - Gradle构建之后的JSP目录

java - 具有 session 支持的 Spring mvc 3.1 集成测试