monitor spring properties files and refresh

简介:

监控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. 建立一个配置管理中心

时间: 04-22

monitor spring properties files and refresh的相关文章

Spring Configuration Check Unmapped Spring configuration files found

Spring Configuration Check Unmapped Spring configuration files found 项目中有xml文件,但没有被用IntelliJ 导入现有工程时,如果原来的工程中有spring,每次打开工程就会提示:Spring Configuration Check 开始不知道怎么回事,但工程不影响. 工程结构(Project Structure)有一个Facets 选项,可以设置各种框架. Facets中则可以设置当前项目所用的框架,如Hibernat

出现unmapped spring configuration files found

intell idea启动出现unmapped spring configuration files found提示. 把spring里面的内容都打勾.

IntelliJ 15 unmapped spring configuration files found

IntelliJ Spring Configuration Check 用IntelliJ 导入现有工程时,如果原来的工程中有spring,每次打开工程就会提示:Spring Configuration Check 开始不知道怎么回事,但工程不影响. 偶然发现这个提示是把spring的配置文件由IntelliJ来管理,打开模块设置.添加spring配置文件的模块. 然后把sping的配置文件添加进来 好了,这样不会再有这个提示了. 至于IntelliJ怎么管理,有什么强大的功能,还没有发现.

Spring 3 MVC: Themes In Spring-Tutorial With Example---reference

Welcome to Part 6 of Spring 3.0 MVC Series. In previous article we saw how to add Internationalization i18n and Localization L10n support to Spring 3.0 based web application. We usedLocaleChangeInterceptor to intercept the change in locale andReloada

Spring Boot 探索系列 - 自动化配置篇

26. Logging Prev  Part IV. Spring Boot features  Next 26. Logging Spring Boot uses Commons Logging for all internal logging, but leaves the underlying log implementation open. Default configurations are provided for Java Util Logging,Log4J, Log4J2 an

Configuring Beans in the Spring IoC Container

Configuring Beans in the Spring IoC Container 这本书对spring bean的配置比较全面. 注:配置类似 http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 的时候,xsd的版本号不要带,至于为什么,参考以前转载的老外博客. Problem Spring offers a powerful IoC container to manage the beans that ma

Spring源码解析 - BeanFactory

BeanFactory是Spring实现依赖注入的核心接口.提供应用的统一配置注册功能,实现业务开发解偶.使用getBean可以代替单例,原型设计模式. 顶重要的BeanFactory里注释写得太好了.所以咱们先翻译下注释,后面再详细分析. 重点直接看红色标注吧. The root interface for accessing a Spring bean container. This is the basic client view of a bean container; further

spring中解析xml

解析xml有SAX,Stax,dom等方式,那么spring中是如何解析xml文件的呢? Document doc = this.documentLoader.loadDocument( inputSource, getEntityResolver(), this.errorHandler, validationMode, isNamespaceAware()); spring中采用的DOM的方式,所要做的一切就是得到org.w3c.dom.Document对象 上面的documentLoade

利用Spring Roo搭建spring/springMVC/jpa(hibernate)

之前看spring实战的时候,书中提到spring roo工具,一直没有来得及尝试. 这次十一,我和女友一致认为前两天人太挤出去是受罪,于是就窝在了家里,就有了点时间来研究一下技术. 好了,言归正传 ,我比较懒,所以一直在寻找最简单的办法去完成一些事情. 对于框架集成也是如此 ,已经尝试过各种方法了,就是为了寻找更简单,实用. 本次是利用Spring Roo进行搭建,认为是目前最简单的了,并且Roo的配置几乎都是最佳实践. -------------------------------PART1