- applicationContext是spring中较高级的容器,与BeanFactory类似,他可以加在配置文件中的bean,将多个bean集中在一起,当请求时分配bean.另外,它增加了企业所需要的功能,比如,从属性文件从解析文本信息和将事件传递给所指定的监听器。这个容器在 org.springframework.context.ApplicationContext interface 接口中定义。
- ApplicationContext 包含 BeanFactory 所有的功能,一般情况下,相对于BeanFactory,ApplicationContext 会被推荐使用。BeanFactory 仍然可以在轻量级应用中使用,比如移动设备或者基于 applet 的应用程序。
- ApplicationContext 接口最常用的实现有如下三个:
ClassPathXmlApplicationContent:该容器从xml中加载已被定义的bean,在这里xml文件路径默认在classpath下,找到并装载完成applicationContent的实例化工作.
applicationContent content=new ClassPathXmlApplicationContent("applicationContent.xml");
当用多个配置文件时使用数组的形式加载:String[] path={"applicationContent.xml","applicationContent-shiro.xml"}
applicationContent content=new ClassPathXmlApplicationContent(path);
FileSystemXmlApplicationContent:该容器从xml中加载已经被定义的bean,在这里xml文件的路径为配置文件的完整的文件系统路径,找到并完成applicationContent的实例化工作.
applicationContent content=new FileSystemApplication("c:/bean.xml")
当有多个配置文件时使用数组的形式加载:String[] path={"c:/applicationContent.xml","c:/bean.xml"}
applicationContent content=new FileSystemApplication(path)
WebXmlApplicationContent:从Web应用中寻找指定的XML配置文件,找到并装载完成ApplicationContext的实例化工作。这是为Web工程量身定制的,使用WebApplicationContextUtils类的getRequiredWebApplicationContext方法可在JSP与Servlet中取得IoC容器的引用。
- 与BeanFactory不同的是,ApplicationContext容器实例化后会自动对所有的单实例Bean进行实例化与依赖关系的装配,使之处于待用状态。而BeanFactory容器实例化后并不会自动实例化Bean,只有当Bean被使用时BeanFactory容器才会对该Bean进行实例化与依赖关系的装配。