简介:
监控spring配置的properties文件,当配置文件修改后自动重启spring
本插件适用于集群的web应用,通过配置中心管理配置文件
原理:
使用 ApplicationListener#onApplicationEvent 监听配置spring启动,启动完成后开启监控线程ConfMonitorMain#start,当某个配置文件修改后ConfMonitorMain通知ConfChangedListener#fileChanged,具体的实现有个默认的DefaultConfChangedListener,DefaultConfChangedListener#fileChanged会重启spring(销毁创建bean和重新加载properties)
DefaultConfChangedListener 的实现也是使用 ApplicationListener#onApplicationEvent 监听spring 的启动,并记录ApplicationContext,在 springmvc 模式下会有2个ConfigurableApplicationContext,所以需要使用sprintContextList记录,当触发fileChanged时,遍历sprintContextList进行refresh即可完成spring 重启
原理图:
使用说明:
https://github.com/blackshadowwalker/spring-conf/wiki
源码:
https://github.com/blackshadowwalker/spring-conf
扩展开发:
1. 自定义ConfChangedListener进行处理,如restart webappp 等
2. 本地文件监控使用nio
3. 远程文件(http)使用zookeeper获取变更通知
4. 建立一个配置管理中心