Java 保存在属性文件中的数据源设置在重新启动后才加载

Java 保存在属性文件中的数据源设置在重新启动后才加载,java,spring,tomcat,spring-mvc,Java,Spring,Tomcat,Spring Mvc,我的应用程序从属性文件中获取其数据源设置。启动Tomcat时,我加载属性文件,根据Tomcat运行的环境(通常是UAT或生产环境)对其进行更改,并在此基础上传递数据库连接所需的适当设置值 我的问题是,当属性文件在引导时第一次用新的连接值更新时,tomcat上的Spring sessionFactory似乎没有获取当前更新的值,因此最终导致数据库连接异常。但是当我重新启动Tomcat时,sessionFactory现在可以访问更新的值 我的问题是-有人知道为什么sessionFactory只使用以

我的应用程序从属性文件中获取其数据源设置。启动Tomcat时,我加载属性文件,根据Tomcat运行的环境(通常是UAT或生产环境)对其进行更改,并在此基础上传递数据库连接所需的适当设置值

我的问题是,当属性文件在引导时第一次用新的连接值更新时,tomcat上的Spring sessionFactory似乎没有获取当前更新的值,因此最终导致数据库连接异常。但是当我重新启动Tomcat时,sessionFactory现在可以访问更新的值


我的问题是-有人知道为什么sessionFactory只使用以前的值而不是更新的设置值吗?

我认为唯一的方法是重新启动tomcat,因为连接是在spring上下文中创建的。
Spring上下文在启动时创建。当您在属性文件中更改某些内容时,实际上它不会影响spring上下文,因为它已经创建。

我在构建时使用Maven Filter替换概要文件属性。

我可以理解开发环境中这种需求的基本原理。但您在生产环境中是否真的每天都更改数据源设置?不!一点也不改变-一次改变发布你真的改变了你的数据源属性吗?或者您正在使用类似PropertyPlaceHolderConfigure的合理配置吗?Spring sessionFactory使用PropertyPlaceHolderConfigure从属性文件中查找数据源属性-唯一的问题是,属性文件在引导时更新,因此期望Spring session factory使用更新的值。就像我说的,这已经在Tomcat7上测试过了,它工作起来很有魅力。这可能是Tomcat6启动线程的问题吗?