前言:控制反转和依赖注入
控制反转是什么?是一种设计思想。
控制:IOC容器控制对象,控制外部资源。
反转:是相对于正转而言的,正转就是我们主动去创建对象,而反转则是我们通过IOC容器被动的创建对象,对象的创建和销毁都是有IOC容器来控制。相当于控制权不同,之前控制权在主程序的手中,反转则是控制权在IOC容器的手中。
依赖注入是什么?
依赖是什么?:比如说A对象会调用B对象中的方法,则此时说明A依赖B。
为什么需要依赖注入?:通过依赖注入机制,我们可以通过简单配置来获取资源,编写业务层代码,而不需要去关注资源来源于何处。
应用程序依赖IOC容器来注入资源。
1.容器和bean的基本原理
1)BeanFactory
是IoC容器的核心接口。它的职责包括:实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。
2)Ioc容器来管理一个或者多个bean。
bean:
通过xml来配置元数据(所以常用的XmlBeanFactory
是BeanFactory),可以通过配置元数据来对Bean进行定义;
实例化bean(静态构造方法,静态工厂方法,动态工厂方法)
Resource resource = new FileSystemResource("beans.xml");
BeanFactory factory = new XmlBeanFactory(resource);
实例化容器(通过beanFactory来实例化容器)
元数据:任何文件系统中的数据分为数据和元数据,数据就是我们所看到的数据,而元数据指用来描述一个文件的特征的系统数据,诸如访问权限、文件拥有者以及文件数据块的分布信息(inode...)等等)。
bean的定义:
-
全限定类名:这通常就是已定义bean的实际实现类。如果通过调用
static
factory方法来实例化bean,而不是使用常规的构造器,那么类名称实际上就是工厂类的类名。 -
行为模式:创建模式(prototype还是singleton)、自动装配模式、依赖检查模式、初始化以及销毁方法
-
用于创建bean实例的构造器参数及属性值。
-
bean之间的关系,即协作 (或者称依赖)。