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

时间: 2024-10-11 06:54:33

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

idea报Unmapped Spring configuration files found.

用IntelliJ 导入现有工程时,如果原来的工程中有spring,每次打开工程就会提示:Spring Configuration Check Unmapped Spring configuration files found. 工程结构(Project Structure)有一个Facets 选项,可以设置各种框架. Facets中则可以设置当前项目所用的框架,如Hibernate和Spring,如果是Web项目,也需要添加Web的Facets,这个界面中的显示和Modules中的很类似.如果

出现unmapped spring configuration files found

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

JBoss EAP6/AS7/WildFly: How to Use Properties Files Outside Your Archive--reference

Introduction I’d like to preface this post with, really, all properties files should be inside your application archive. However, there are occasions, where you do need properties files more easily accessible — where a modification doesn’t require br

IntelliJ 15 unmapped spring configuration files found

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

Spring Properties 读取 PropertyPlaceholderConfigurer

PropertyPlaceholderConfigurer @Service("propertyPlaceholder") public class PropertyPlaceholder extends PropertyPlaceholderConfigurer {     private static Map<String,String> propertyMap;     @Override     protected void processProperties(Co

Spring Uploading Files

1,在servlet-dispatcher.xml中添加代码 <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" /> 也可以根据需求添加相关属性 <property name="maxUploadSize" value="2097152"><

【Spring源码分析】.properties文件读取及占位符${...}替换源码解析

前言 我们在开发中常遇到一种场景,Bean里面有一些参数是比较固定的,这种时候通常会采用配置的方式,将这些参数配置在.properties文件中,然后在Bean实例化的时候通过Spring将这些.properties文件中配置的参数使用占位符"${}"替换的方式读入并设置到Bean的相应参数中. 这种做法最典型的就是JDBC的配置,本文就来研究一下.properties文件读取及占位符"${}"替换的源码,首先从代码入手,定义一个DataSource,模拟一下JDB

Spring 中无处不在的 Properties

转自:https://javadoop.com/post/spring-properties?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io Spring 中无处不在的 Properties 更新时间:2018-01-03 对 Spring 里面的 Properties 不理解的开发者可能会觉得有点乱,主要是因为配置方式很多种,使用方式也很多种. 本文不是原理分析.源码分析文章,只是希望可以帮助读者更好地理解和使用 S