Spring提供了两种容器类型:BeanFactory和ApplicationContext。
- BeanFactory:基础类型的IoC容器,提供完整的IoC服务支持。如果没有特殊指定,默认采用延迟初始化策略。只有当客户端对象需要访问容器中的某个受管对象的时候,才对该受管对象进行初始化以及依赖注入操作。所以,相对来说,容器启动初期速度较快,所需要的资源有限。
- ApplicationContext:在BeanFacotry的基础上构建,是相对比较高级的容器实现,除了拥有BeanFacotry的所有支持,ApplicationContext还提供了其他高级特性,如事件发布/国际化信息支持等。ApplicationContext所管理的对象,在该类型容器启动之后,默认全部初始化并绑定完成。所以,相对于BeanFactory来说,ApplicationContext要求更多的系统资源,同时,因为在启动时就完成所有的初始化,容器启动时间会较长。
- 拥有BeanFactory之后
通常情况下,BeanFacotry会通过常用的XML文件来注册并管理各个业务对象之间的依赖关系。
BeanFactory container = new XmlBeanFactory(new ClassPathResource("配置文件路径")); B b = (B)container.getBean("b"); b.method();