配置文件监听器

主要是根据FileSystemWatcher类来监听配置文件

目标是每次修改了web.config配置文件不用回收应用程序或者重启网站

贴出实现核心代码

  1     /// <summary>
  2     /// 配置文件监听器
  3     /// </summary>
  4     public sealed class ConfigMonitor
  5     {
  6         /// <summary>
  7         /// 配置文件路径
  8         /// </summary>
  9         private static string path = AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
 10
 11         /// <summary>
 12         /// 配置文件路径
 13         /// </summary>
 14         public static string Path
 15         {
 16             get
 17             {
 18                 return path;
 19             }
 20
 21             set
 22             {
 23                 path = value;
 24             }
 25         }
 26
 27         /// <summary>
 28         /// 配置文件名称
 29         /// </summary>
 30         private static string filter = "\\Web.config";
 31
 32         /// <summary>
 33         /// 配置文件名称
 34         /// </summary>
 35         public static string Filter
 36         {
 37             get
 38             {
 39                 return filter;
 40             }
 41
 42             set
 43             {
 44                 filter = value;
 45             }
 46         }
 47
 48         /// <summary>
 49         /// 配置文件更改委托定义
 50         /// </summary>
 51         public delegate void EventHandlerAfterConfigModify();
 52
 53         /// <summary>
 54         /// 配置文件更改事件
 55         /// </summary>
 56         public static event EventHandlerAfterConfigModify ConfigModifyInfoEvent;
 57
 58         /// <summary>
 59         /// 配置对象
 60         /// </summary>
 61         public static Configuration Config { get; private set; }
 62
 63         /// <summary>
 64         /// Initializes static members of the <see cref="ConfigMonitor"/> class.
 65         /// 构造函数
 66         /// </summary>
 67         static ConfigMonitor()
 68         {
 69             MonitorConfigFile();
 70             InitConnectionConfig();
 71         }
 72
 73         /// <summary>
 74         /// 创建配置文件发动监听器
 75         /// </summary>
 76         private static void MonitorConfigFile()
 77         {
 78             FileSystemWatcher fileWatcher = new FileSystemWatcher
 79                                                 {
 80                                                     Path = Path,
 81                                                     Filter = Filter,
 82                                                     NotifyFilter = NotifyFilters.CreationTime | NotifyFilters.LastWrite | NotifyFilters.FileName
 83                                                 };
 84
 85             fileWatcher.Changed += OnChanged;
 86             fileWatcher.Created += OnChanged;
 87             fileWatcher.Deleted += OnChanged;
 88             fileWatcher.Renamed += OnChanged;
 89             fileWatcher.EnableRaisingEvents = true;
 90         }
 91
 92         /// <summary>
 93         /// 更改处理事件
 94         /// </summary>
 95         /// <param name="source">事件源</param>
 96         /// <param name="e">事件参数</param>
 97         private static void OnChanged(object source, FileSystemEventArgs e)
 98         {
 99             InitConnectionConfig();
100             RaiseEvent();
101         }
102
103         /// <summary>
104         /// 向订阅者发布信息
105         /// </summary>
106         private static void RaiseEvent()
107         {
108             if (ConfigModifyInfoEvent != null)
109             {
110                 ConfigModifyInfoEvent();
111             }
112         }
113
114         /// <summary>
115         /// 初始化所有连接配置
116         /// </summary>
117         private static void InitConnectionConfig()
118         {
119             string filePath = Path + Filter;
120             var map = new ExeConfigurationFileMap { ExeConfigFilename = filePath };
121             Config = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);
122         }
123     }

时间: 2024-10-23 04:11:08

配置文件监听器的相关文章

Spring中过滤器+监听器的使用

过滤器: 过滤器放在web资源之前,可以在请求抵达它所应用的web资源(可以是一个Servlet.一个Jsp页面,甚至是一个HTML页面)之前截获进入的请求,并且在它返回到客户之前截获输出请求.Filter:用来拦截请求,处于客户端与被请求资源之间,目的是重用代码.Filter链,在web.xml中哪个先配置,哪个就先调用.在filter中也可以配置一些初始化参数. Filter 有如下几个种类: 用户授权的Filter: Filter 负责检查用户请求,根据请求过滤用户非法请求. 日志Filt

基于纯Java代码的Spring容器和Web容器零配置的思考和实现(3) - 使用配置

经过<基于纯Java代码的Spring容器和Web容器零配置的思考和实现(1) - 数据源与事务管理>和<基于纯Java代码的Spring容器和Web容器零配置的思考和实现(2) - 静态资源.视图和消息器>两篇博文的介绍,我们已经配置好了Spring所需的基本配置.在这边博文中,我们将介绍怎么使用这些配置到实际项目中,并将web.xml文件替换为一个Java类. 我们使用Java代码来配置Spring,目的就是使我们的这些配置能够复用,对于这些配置的复用,我们采用继承和引入来实现

SpringMVC——

SpringMVC简介 Spring web mvc和Struts2都属于表现层的框架,它是Spring框架的一部分. JavaEE三层架构 表现层 WEB层(采用JSP/Servlet/Struts2/SpringMVC技术):展示数据用的. 应用层 Service层(采用Bean/EJB技术):处理业务逻辑,一般if判断,循环之类. 数据层 Dao层(准确的说是数据接口,采用JDBC/Hibernate/Mybatis技术):保存数据和访问数据的. SpringMVC架构 请求流程 1. 用

监听器如何获取Spring配置文件(加载生成Spring容器)

Spring容器是生成Bean的工厂,我们在做项目的时候,会用到监听器去获取spring的配置文件,然后从中拿出我们需要的bean出来,比如做网站首页,假设商品的后台业务逻辑都做好了,我们需要创建一个监听器,在项目启动时将首页的数据查询出来放到application里,即在监听器里调用后台商品业务逻辑的方法,也就是说我们需要在监听器里获取Spring中配置的相应的bean.先把监听器创建出来: 1. 创建InitDataListener 创建一个监听器InitDataListener继承Serv

认识oracle监听器配置文件

同一个主机的同一个数据库,只能有一个监听器,我们所配置多个监听器时,它会监听另外一台主机上的数据库,但这样性能不好.listener.ora配置文件讲解:监听器部分:LISTENER =  (DESCRIPTION_LIST =    (DESCRIPTION =     (ADDRESS=(PROTOCOL = IPC) (KEY=EXTPRO1))    (ADDRESS=(PROTOCOL = TCP)(HOST = 192.168.2.29)(PORT = 1521))       ) 

监听器如何获取Spring配置文件

我们在做项目的时候,会用到监听器去获取spring的配置文件,然后从中拿出我们需要的bean出来,比如做网站首页,假设商品的后台业务逻辑都做好了,我们需要创建一个监听器,在项目启动时将首页的数据查询出来放到application里,即在监听器里调用后台商品业务逻辑的方法,也就是说我们需要在监听器里获取Spring中配置的相应的bean.先把监听器创建出来: 1. 创建InitDataListener 创建一个监听器InitDataListener继承ServletContextListener:

web.xml中配置spring监听器和spring配置文件位置

<!-- spring配置文件位置 --> <context-param>  <param-name>contextConfigLocation</param-name>  <param-value>classpath:applicationContext.xml</param-value> </context-param> <!-- spring核心监听器 --> <listener>  <

spring配置文件默认名称及位置,ContextLoaderListener监听器作用

spring在web.xml中的配置 由于spring需要启动容器才能为其他框架提供服务,而web应用程序的入口是由web服务器控制的,因此无法在main()方法中通过创建ClassPathXmlApplicationContext对象来启动spring容器.spring提供了org.springframework.web.context.ContextLoaderListener(spring-web依赖下)这个监听器类来解决这个问题.该监听器实现了ServletContextListener

过滤器、监听器、拦截器的区别

1.过滤器 Servlet中的过滤器Filter是实现了javax.servlet.Filter接口的服务器端程序,主要的用途是过滤字符编码.做一些业务逻辑判断等.其工作原理是,只要你在web.xml文件配置好要拦截的客户端请求,它都会帮你拦截到请求,此时你就可以对请求或响应(Request.Response)统一设置编码,简化操作:同时还可进行逻辑判断,如用户是否已经登陆.有没有权限访问该页面等等工作.它是随你的web应用启动而启动的,只初始化一次,以后就可以拦截相关请求,只有当你的web应用