1.tomcat这个组件,提供给 开发者的 就是一个web.xml文件,tomcat最后解析这个xml,去完成特定的功能
2.按照这个道理。spring的加载,肯定要在web.xml中配置
3.Spring采用这种监听器来启动自身的方法,也是一种设计模式,叫观察者模式
4.整个过程是这样的,Tomcat加载webapps项目时,先通过反射加载在web.xml标明的类(通通放入一个数组)
到某个时刻,我tomcat(事件源,事件的起源)会发起一个叫ServletContextEvent的事件(里面带着各种参数)
凡是实现了ServletContextListener接口的类,我都会调用里面的contextInitialized方法,并把这个事件参数传进去
咳咳,现在我看看这个数组里有没符合条件的(遍历),发现真有实现这个接口的(类 instanceof 接口),就调用contextInitialized方法
于是Spring就被动态加载进来了~~
5.web.xml主要配置spring的地方有两点
1.context-param 设置servletContext的上下文参数,这里面的key value主要是
key:contextconfiglocation value:spirng.xml的位置
2.配置ContextLoadListener 监听器
3.tomcat发生servletContextEvent 事件对象,然后监听器拿到执行方法
servletContextEvent可以获取到 servletContext里面的 关于spring的参数
从而,ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
这样就完成了spring的加载