今天以org.springframework.web.context.ContextLoaderListener为主题,开启分享。话不多说,直接上干货。
ContextLoaderListener的整体框架图如下所示:
1、EventListener只是所有事件侦听器接口必须扩展的标记接口,内部无具体逻辑。
2、ServletContextListener是对ServeltContext的监听器。此接口仅包括两个方法:容器启动时调用contextInitialized方法.容器关闭时调用contextDestroyed方法。
3、ContextLoader由ContextLoaderListener调用,大部实现都隐藏在 ContextLoader 类里,如感兴趣可继续修炼。
4、ContextLoaderListener调用contextInitialized方法完成Spring上下文初始化;调用contextDestroyed方法完成Spring上下文销毁。
5、可自行定义ContextLoaderListener的子类,进而在上下文启动与销毁时加入自定义功能。
示例如下:
(1)web.xml配置信息如下:
(2)主要代码实现如下:
public class ContextLoaderListener extends org.springframework.web.context.ContextLoaderListener {
@Override
public void contextInitialized(ServletContextEvent event) {
// 设置自定义功能,可根据不同需要自行加入
// 初始化spring上下文
super.contextInitialized(event);
}
@Override
public void contextDestroyed(ServletContextEvent event) {
try {
// 设置自定义功能,可根据不同需要自行加入
} catch (Throwable e) {
}
super.contextDestroyed(event);
}
}
最后希望大家善用此功能!不要小瞧这个功能呦,有的公司就是采用这种方式完成的自定逻辑预加载,如统一配置信息的预加载等等。
作者:Gallen
网友评论