【问题标题】:How to change spring bean property value in xml at runtime?如何在运行时更改xml中的spring bean属性值?
【发布时间】:2019-04-05 11:06:13
【问题描述】:

我有一个 springconfig.xml 文件,我曾经从 my.properties 文件中获取 bean 属性值。属性文件值动态更改。但它不会设置为 spring bean 属性。只有在我重新启动我的tomcat后它才会改变。这是我的部分 xml 代码。

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="location">
         <value>file:/SATHISH/apache.8.0.24/bin/my.properties</value>
     </property>
    </bean> 

<bean id="jmsEmailTemplateBean" class="org.springframework.jms.core.JmsTemplate">
    <property name="connectionFactory" ref="authenticationConnectionFactory" />
    <property name="defaultDestination" ref="${queuename}" />
</bean>

如果我将 my.properties 值更改为“foo”,它将起作用。 我再次在运行时将“foo”更改为“boo”,但它不起作用。它不会分配给 ${queuename}。

我在运行时手动更改了 my.properties 值。它不会影响springconfig.xml

是否可以在运行时更改 xml 值? 提前致谢

【问题讨论】:

  • 只有在重新启动服务器后,属性文件更改才会影响应用程序。如果要更改需要使用属性文件的内容,则无需进行任何代码更改。属性文件用于初始设置。请理解为什么属性文件是。
  • 是的,我知道。我通过使用一些代码在运行时动态更改了这些值。属性文件(my.properties)已更新。但不会影响 springconfig.xml {queuename}。
  • 它不会影响@Sathish。这就是为什么我要理解属性文件的概念。如果您要动态更新值,那么为什么不更新 java bean 本身的值?
  • 为什么 java 到 props 然后 props 到 xml 然后 xml 到 java。可以直接在java中直接更新值。
  • 再次说明为什么要将其设置为 xml。但是,您将使用 xml 作为 java 对象。所以你可以直接在java对象中设置它。

标签: java spring spring-config


【解决方案1】:

您需要以编程方式查看文件以重新加载更改或使用此 bean org.springframework.context.support.ReloadableResourceBundleMessageSource
重新加载属性文件。

【讨论】:

    【解决方案2】:

    尝试使用 SpringBoot 或 IntelliJ Idea ;)

    【讨论】:

    • 这是对他问题的回答吗?如果它解决了他的问题或问题,请发布答案。如果您对他们的问题不清楚,请在 cmets 部分提出。
    • 请贴出你认为可以解决他问题的代码sn-p。
    猜你喜欢
    • 1970-01-01
    • 2015-01-23
    • 1970-01-01
    • 2015-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-03
    相关资源
    最近更新 更多