天天看点

Spring--IoC容器BeanFactory和ApplicationContext

IoC又叫依赖注入。它描述了对象的定义和依赖的一个过程,也就是说,依赖的对象通过构造参数、工厂方法参数或者属性注入,当对量实例化后依赖的对象才被创建,当创建bean后容器注入这些依赖对象。这个过程基本上是反向的,因此命名控制反转(IoC),它通过直接使用构造类控制实例化,或者定义它们之间的依赖关系,或者类似于服务定位模式的一种机制。

org.springframework.beans和org.springframework.context是Spring框架中IoC容器的基础,BeanFactory接口提供一种高级的配置机制能够管理任何类型的对象。AppliactionContext是BeanFactory的子接口。它能够更容易集成Spring的AOP功能、消息资源处理(比如在国际化中使用)、事件发布和特定的上下文应用层比如在网站应用中的WebApplicationContext。

org.springframework.context.AppliactionContext接口代表了Spring IoC容器,它负责实例化、配置、组装beans。容器通过读取配置元数据获取对象的实例化、配置和组装的描述信息。它配置的元数据用xml、Java注解或Java代码表示。它允许你表示组成你应用对象以及这些对象之间丰富的内部依赖关系。

Spring提供几个开箱即用的ApplicationContext接口的实现类。在独立的应用程序中通常创建一个ClassPathXmlApplicationContext或FileSystemXmlApplicationContext实例对象。虽然XML是用于定义配置元数据的传统格式,但是也可以指示容器使用Java注解或代码作为元数据格式,但要通过提供少量XML配置来声明启用对这些附加元数据格式的支持。

  • ClassPathXmlApplicationContext:用于加载类路径下Spring的配置文件
  • FileSystemXmlApplicationContext:用于加载本地磁盘下Spring的配置文件

BeanFactory和ApplicationContext的区别:

  • BeanFactory:是在getBean的时候才会生成类的实例
  • ApplicationContext:在加载applicationContext.xml(容器启动)时候就会创建