Spring IoC容器:Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们。开发人员在开发过程中,把对象的创建和销毁交给了spring容器,在使用的时候,只需要向容器申请就好了。这样就是的程序实现了解耦。
Spring IOC容器和bean介绍
IoC也被称为依赖注入(DI)。它是一个过程,对象通过构造函数参数,工厂方法的参数或在工厂方法构造或返回后在对象实例上设置的属性来定义它们的依赖关系,即它们使用的其他对象。容器在创建bean时会注入这些依赖关系。这个过程基本上是相反的,因此名为Inversion of Control(IoC),通过使用类的直接构造或诸如Service Locator模式之类的机制来控制其依赖关系的实例化或位置的bean本身。
在org.springframework.beans
和org.springframework.context
包是Spring框架的IoC容器的基础。该 BeanFactory
接口提供了一种能够管理任何类型对象的高级配置机制。 ApplicationContext 是BeanFactory 的一个子接口。它增加了与Spring的AOP功能更容易的集成; 消息资源处理(用于国际化),事件发布; 和特定于应用层的上下文(例如,WebApplicationContext 用于Web应用程序中)。
Spring容器
Sping的容器可以分为两种类型
BeanFactory:
org.springframework.beans.factory.BeanFactory
接口是最简单的容器,提供了基本的 DI 支持。最常用的 BeanFactory 实现就是 XmlBeanFactory 类,它根据XML文件中的定义加载beans,该容器从XML文件读取配置元数据并用它去创建一个完全配置的系统或应用。ApplicationContext 应用上下文:
org.springframework.context.ApplicationContext
基于BeanFactory之上构建,并提供面向应用的服务。该接口org.springframework.context.ApplicationContext
表示 Spring IoC 容器,并负责实例化,配置和组装上述bean。容器通过读取配置元数据获取有关要实例化,配置和组装的对象的指示信息。配置元数据用XML,Java注释或Java代码表示。它允许您表示组成应用程序的对象以及这些对象之间丰富的相互依赖关系。
在Spring框架中的核心组件只有三个:Core、Context 和 Bean。它们构建起了整个Spring的骨骼架构,没有它们就不可能有AOP、Web等特性功能。
如果说在三个核心中再选出一个核心,那就非Bean莫属了。可以说,Spring就是面向Bean的编程,Bean在Spring中才是真正的主角。
Spring为何如此流行?你会发现Spring解决了一个非常关键的问题,它可以让你对对象之间的关系转而用配置文件来管理,或者注解,也就是它的依赖注入机制。
而这个注入关系在一个叫Ioc的容器中管理。Ioc容器就是被Bean包裹的对象。Spring正是通过把对象包装在Bean中从而达到管理这些对象及做一些列额外操作的目的。
BeanFactory 与 ApplacationContext 的区别
IOC中最核心的接口是Beanfactory提供IOC的高级服务,而ApplicationContext是建立在BeanFactory基础之上提供抽象的面向应用的服务。
spring依赖注入
- Setter方式注入(设值注入)
- 构造器方式注入