IOC:Inversion of Control,即控制反转:本来是由应用程序控制对象之间的依赖关系,现在交给了容器管理(spring IOC容器),而spring IOC容器通过DI(即依赖注入)的方式来实现管理和控制这些依赖关系。
应用程序控制对象之间的依赖关系时,要用一个对象,要先创建一个实例,即new 一个对象,而IOC容器控制这些依赖关系时,不需要直接在代码中与对象连接,而是在配置文件中描述要使用的对象,容器负责键这些对象联系起来。
在spring中,最基本的IOC容器接口为BeanFactory,这个接口为具体的IOC容器的实现做了最基本的功能规定:
public class BeanFactory{
//对FactoryBean的转义定义,因为如果使用bean的名字检索FactoryBean得到的对象是工厂生成的对象
//如果需要得到工厂本身,需要转义
String FACTORY_BEAN_PREFIX = “&”;
//根据bean的名字,在IOC容器里得到bean实例
Object getBean(String name)throws BeansException;
//根据bean的名字和CLass类型来得到bean实例
Object getBean(String name,Class requredType)throws BeansException;
//对bean的检索,检索IOC容器中是否有此名字的BEAN
boolean containsBean(String name);
//根据bean名字获取实例,并判断是否是单例
boolean isSingleton(String name)throws NoSuchBeanDefinitionException;
//根据bean名字获取bean实例的CLASS类型
Class getType(String name) throws NoSuchBeanDefinitionException;
//根据bean名字获取bean别名
String[] getAliases(String name);
}
在BeanFactory里只是对IOC容器的基本行为做了定义,具体要看其实现,另外IOC容器实现对依赖对象管理是通过依赖注入DI实现的。