4
回答
spring怎么自动重新加载配置信息
华为云7大明星产品0元使用! >>>   
spring/springmvc配置文件,被修改后怎么自动重新加载?
举报
jack_jones
发帖于3年前 4回/3K+阅
共有4个答案 最后回答: 3年前

Spring只提供了应用上下文的 refresh 方法,但是没有提供配置文件的监听功能,你需要自己实现监听。

实现的方式有很多种,比如自己实现使用定时器去轮询检查文件是否有修改,或者使用quartz提供的文件监听Job。如果你是用的是JDK7,就更加容易了,java.nio.file包下提供了相应的接口可以监测到文件更新(具体的可以去搜索 WatchService 接口说明)。无论你使用哪种方式监测到 spring 的配置文件发生了变更,只需要简单的调用一下  ApplicationContext#refresh 方法即可。

--- 共有 1 条评论 ---
jack_jones其实监控文件变化我能做到,只是变化后怎么重新加载我不会 3年前 回复

spring 好像没有这个功能。这个需要比较好的 热部署,可以使用 jrebel。修改这些系统配置文件的,建议 直接重启服务器,这是最省事的方法。

如果真的要写代码来实现重新加载的,这个可能需要看一下 spring 是怎么实现,这个我不太懂。

mvc 配置文件一般配置好之后,很少需要改动吧,如果是国际化方面,可以看看这个类:
org.springframework.context.support.ReloadableResourceBundleMessageSource

最近正好做了这件事。

如1楼所说,WatchService 监听一个目录,可以知道哪个文件发生了变化。

这个文件发生了变化,对应了1个或者多个Spring的bean。

拿到Spring的 bean,修改 bean的属性就OK了。

没有必要全部加载一遍ApplicationContext

顶部