通常在我们的项目中
ioc容器创建和销毁都要在合适的时机完成;
项目启动:{
IOC创建完成
}
项目销毁{
IOC销毁;
}
我们可以写一个监听器完成这个工作;
但是其实Spring已经帮我们写好了这个监听器;
<!-- needed for ContextLoaderListener -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<!-- Bootstraps the root web application context before servlet initialization -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
只需要在web项目下的 web.xml文件中加入contextloaderlistener标签,就会生成上边的代码,然后配置<param-value>classpath:applicationContext.xml</param-value>就可以啦。
这个监听器创建好的ioc容器在 ContextLoader类中
ContextLoaderListener类 继承自ContextLoader类---
/**这个属性就是ioc容器 */
private WebApplicationContext context;
有一个静态方法能获取context属性
getCurrentWebApplicationContext
使用方法:
我们可以写一个工具类来获取ioc容器中的对象,方法名就叫getBean;
public class WebUtils {
//private static ApplicationContext ioc = new ClassPathXmlApplicationContext("applicationContext.xml");
/**
* 从ioc容器中获取组件的方法
* @param clazz
* @return
*/
public static <T>T getBean(Class<T> clazz){
//获取ioc容器
WebApplicationContext ioc = ContextLoader.getCurrentWebApplicationContext();
return ioc.getBean(clazz);
}
}
还有 需要注意的是:从上面配置web.xml可以看出来,ContextLoaderListener是spring中web包下的一个类,所以我们需要导入web包,否则出错!!!!