Spring-如何绑定applicationContext与servletContext的生命周期
一.applicationContext对象的生命周期
1.applicationContext是容器对象,一创建时配置的所以对象都会被创建出来,我们希望是创建一份即可,而且在项目运行期间,类都能够在容器中获取到实例;
2.applicationContext的生命周期希望是能够跟servletContext一样长,即随项目的创建而创建,关闭而摧毁;可以通过servletContext的监听器的生命周期方法中将applicationContext跟servletContext绑定在一起共生死
3.既然applicationContext在servletContext的监听器的生命周期方法中,就可以获得到事件源即servletContext,进而可以获取到application域;
4.获取application域有什么用?可以把applicationContext放到application域中,到时候想要获取容器对象时,只需要获取application域对象,根据键值对的方式取得容器对象
二.Spring的ContextLoaderListener监听器
1.根据上面的理论是可以将applicationContext与servletContext的生命周期绑定一起,不过spring已经写好了一个监听器用于容器对象和servletContext的绑定
2.在web.xml中配置该监听器(得导一个web包),如图:
3.配置完监听器后还不够,还得告诉它sping配置文件在哪,所以还得配置参数路径,参数名必须是contextConfigLocation,值表示到类路径下加载applicationConetxt.xml的文件,如图:
4.要注意的是我们的spring配置文件的命名和位置是任意的,也就是如果你配置文件丢三落四的话,在web.xml里得配相应的路径,所以建议还是统一下路径在src的applicationContext.xml
三.获取容器对象
1.想要获取容器,按正常逻辑的话我们是得获取applicaiton域对象,根据键来获取;不过这个键特别长,所以spring特意提供了一个工具类和方法,只需要我们把servletContext对象给该方法,返回一个我们所需要的容器对象;如图:
applicationContext与servletContext的生命周期