Spring容器总结
一、spring 容器主要分为两类
一类是Bean工厂(org.springframework,beans.factory.BeanFactory接口定义) 是最简单的容器,提供了最基础的依赖注入的支持,二是应用上下文(org.springframework.context.ApplicationContext接口定义)建产在BeanFactory之上的,提供了更多的系统构架服务,如从属性文件中读取文本信息,向有关的事件监听器发布事件等。
BeanFactory
BeanFactory的实现,最常用的是 org.springframework.bean.factory.xml.XmlBeanFactory,根据Xml文件中的定义来装载Bean。XmlBeanFactory的创建可以通过任意一种Resource为实现;Resource常见的Resource实现有:ByteArrayResource、ClassPathResource、FileSystemResource等。
ApplicationContext
ApplicationContext相对于BeanFactory来说的话,提供了更多的功能,1、提供了文本信息解析工具,包括对国际化(I18N)的支持;2、载入文件资源的通用方法,如载入图片;3、向注册为监听器的Bean发送事件。
ApplicationContext的诸多实现中,经常使用的有三个:
1、ClassPathXmlApplicationContext 从类路径中的xml文件载入上下文定义信息,把上下文定义文件当成类路径资源。
2、FileSystemXmlApplicationContext 从文件系统中的XML文件载入上下文定义信息。
3、XMLWebApplicationContext 从Web系统中的XMl文件载入上下文定义信息。
二、BeanFactory与ApplicationContext的区别
应用上下文与Bean工厂最本质的区别是关于单实例Bean的载入方式,BeanFactory延迟加载所有的Bean,直到getBean()方法被调用时,Bean才会被创建。应用上下文则会在上下文启动后预载入所有的单实例Bean。通过预载入单实例Bean确保当需要使用的时候它们已经准备好了,从而不需要等待它们被创建。