1.入口
webx应用的起点是listener,在窗口初始化和销毁时会被调用。
(1)启动监听器WebxContextLoaderListener
通过继承ContextLoaderListener(继承ContextLoader),并实现ServletContextListener(继承EventListener),实现的WebX环境加载监听器。
public class WebxContextLoaderListener extends ContextLoaderListener{
@Overrider
public void contextInitialized(){
createContextLoader().initWebApplicationContext(event.getServletContext());
}
}
(2)环境初始化contextInitialized()
这个方法在容器初始化会被调用,创建环境加载器初始化webx应用。createContextLoader返回的是一个WebxComponentsLoader(ContextLoader)的实例,实际上是一个WebxComponentsLoader类的匿名子类的实例,而这个子类覆盖了getDefaultContextClass方法。
(3)WebxComponentsLoader
它继承自WebApplicationContext(继承自ApplicationContext,而ApplicationContext继承自BeanFactory)。
(4)webx组件管理
用WebxComponentsContextLoader取代SpringMVC的ContextLoader进行环境加载,新建一个WebxComponentsContext作为容器,这是SpringMVC默认的xmlWebApplicationContext的派生类。这个根容器默认读取webx.xml作为配置项。
在webx.xml和webx-.xml中定义的beans将按照Spring容器的方式管理,而webx自定义的服务,如pipeline、form等,将使用webx自定义的解析器解析为对应的bean实例,安装到webx框架中,以备未来使用。
其中自动扫描是这样工作:
扫描WEB-INF目录下所有匹配webx-.xml的文件,其中所代替的字符串为组件名。例如:WEB-INF下有一胩名为webx-home.xml的文件,那代表一个名为home的组件。
最后欢迎大家访问我的个人网站:1024s