【问题标题】:Changing Properties values in Spring MVC在 Spring MVC 中更改属性值
【发布时间】:2014-11-10 03:54:32
【问题描述】:

我正在尝试将属性文件中的动态值加载到 Bean 类(Spring MVC 项目)中。

我曾使用以下标签来加载值。

<context:property-placeholder 
        location="file:/home/java/examresults/departments.properties" 
        ignore-unresolvable="true" order="2"/>`

但在启动应用程序后更改属性文件中的值,它不会反映在表单上。

我正在使用以下声明将这些值注入到一个类中。

<bean id="beanmessage" class="examresults.bean.MessageClass" scope="prototype">

        <property name="imagelocation" value="/home/java/examresults/"/>  
        <property name="boards" value="${boardvalue}"/> 
        <property name="departments" value="${deptvalue}"/>
    </bean>

因此,我无法充分利用 Spring MVC 应用程序中的属性文件。

【问题讨论】:

  • Spring 不支持动态重新加载这样的属性。您可以重新加载应用程序上下文,但这可能是矫枉过正。有一些方法可以处理资源的热重载,例如 jrebel,甚至 jmx/JNDI。
  • 您应该希望在应用程序启动后更改属性文件。如果值是动态的,请将它们放入数据库或普通文件中,但不要向 Spring 询问。
  • 为什么我要为更改的值创建另一个表?如果我将值放在外部文件上,那么应该相应地检索它。但是我仍然需要重新启动应用程序服务器。谢谢。

标签: spring spring-mvc properties-file


【解决方案1】:

如果您修改属性文件,则需要重新加载网络服务器以反映更改。

当一个 webserver 启动时,它会用配置的属性实例化所有注册的 bean。因此,如果您在网络服务器启动后对配置进行了更改,bean 不会知道更改的配置,因为它已经在应用程序上下文/IoC 容器中实例化了。

通过重新启动/重新加载网络服务器(tomcat 或 jetty)来反映属性文件中的更改。

【讨论】:

    猜你喜欢
    • 2017-01-05
    • 2016-05-23
    • 1970-01-01
    • 1970-01-01
    • 2016-11-25
    • 2020-09-05
    • 1970-01-01
    • 2017-07-08
    • 1970-01-01
    相关资源
    最近更新 更多