Spring Ioc之BeanFactory

     IoC(Inversion of Control),即所谓的控制反转,就是应用本身不负责依赖对象的创建及维护, 依赖对象的创建及维护是由外部容器(BeanFactory)负责的。

     Spring通过配置文件(或者注解、JavaConfig)描述Bean和Bean之间的依赖关系,利用反射机制实例化Bean并建立Bean之间的依赖关系。Spring的IoC容器在完成这些底层工作的同时,还提供了Bean实例缓存、生命周期管理、Bean实例代理、事件发布、资源装载等高级服务。    

    Spring IoC容器有两个核心接口:BeanFactory和 ApplicationContext。当系统创建Spring IoC容器时,默认会预初始化所有的singleton Bean。也就是说,当IoC容器初始化完成后,容器中所有singleton Bean也实例化完成,这就意味着:系统前期创建IoC容器时将有较大的系统开销,但一旦容器初始化完成,程序后面获取singleton Bean实例时将拥有较好的性能。

BeanFactory

   BeanFactory提供了IoC的基本功能,其默认实现是XmlBeanFactory。

       Spring Ioc之BeanFactory_第1张图片     

Spring Ioc之BeanFactory_第2张图片

ApplicationContext

    ApplicationContext是BeanFactory的子接口。BeanFactory提供基础的IoC功能,ApplicationContext除了支持BeanFactory的全部功能外,提供了更多企业级开发的特性:

  • ApplicationContext继承MessageSource接口,因此提供国际化支持。

  • 资源访问。

  • 事件机制。      

    ApplicationContext有以下几种实现:

  • AnnotationConfigApplicationContext—Loads a Spring application context from one or more Java-based configuration classes

  • AnnotationConfigWebApplicationContext—Loads a Spring web application context from one or more Java-based configuration classes

  • ClassPathXmlApplicationContext—Loads a context definition from one or more XML files located in the classpath, treating context-definition files as classpath resources

  • FileSystemXmlApplicationContext—Loads a context definition from one or more XML files in the filesystem

  • XmlWebApplicationContext—Loads context definitions from one or more XML files contained in a web application

WebApplicationContext

      WebApplicationContext是ApplicaitonContext的子接口,提供了Spring IoC对Web应用的支持。

Spring Ioc之BeanFactory_第3张图片

      

      


你可能感兴趣的:(Spring Ioc之BeanFactory)