Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring属性文件加载器:当属性在文件中更新时,如何在运行时更新属性?_Java_Spring_Jakarta Ee_Properties - Fatal编程技术网

Java Spring属性文件加载器:当属性在文件中更新时,如何在运行时更新属性?

Java Spring属性文件加载器:当属性在文件中更新时,如何在运行时更新属性?,java,spring,jakarta-ee,properties,Java,Spring,Jakarta Ee,Properties,我正在使用PropertyPlaceHolderConfigure使用spring加载属性文件 <bean id="placeholderProperties" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list>

我正在使用PropertyPlaceHolderConfigure使用spring加载属性文件

<bean id="placeholderProperties" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
       <property name="locations">
          <list>        
             <value>file:${applicationProperties}</value>    
          </list>
       </property>
    </bean>

文件:${applicationProperties}
我已重写此PropertyPlaceHolderConfigure以将所有键值对存储在映射中。现在的要求是,无论何时更新此属性文件并将其保存在文件系统上,都应该在运行时使用新值更新此映射


如何实现此要求?

您必须使用beanfactory后处理器:

应用程序上下文.xml


编写相应的连接bean 在测试类中

ApplicationContext ctx=new ClassPathXmlApplicationContext(“com/bfpp/common/ApplicationContext.xml”);
/*BeanFactory工厂=新的XmlBeanFactory(新的类路径资源(“com/bfpp/common/application context.xml”)*/
/*BeanFactoryPostProcessor bfpp=factory.getBean(“pphc”,BeanFactoryPostProcessor.class);
bfpp.后处理BeanFactory((可配置列表BeanFactory)工厂)*/
Connectionmanager c=ctx.getBean(“connection”,Connectionmanager.class);
系统输出打印ln(c);
写入数据库属性

db.url=jdbc:odbc:thin@1521:xe
db.un=username
db.pwd=password
在bean初始化发生之前,这些将在xml文件中被替换。
beanfactory的情况下,当我们调用
getBean()
方法时,将加载bean,因此如果我们在创建
ClassPathXmlApplicationContext
本身时使用applicationcontext创建bean,则不需要注释中的代码。

有人扩展了它以支持这一点