spring中的两种ioc容器
一、BeanFactory:
是spring中提供的最简单最基本的容器;这个容器只提供了IOC/DI的功能;这个容器中最主要个方法就是
getBean()方法;
通常我们会使用xmlBeanFactory对象创建容器:XmlBeanFactory就是针对最基本的ioc容器的实现, 这个IOC容器可以读取XML文件定义的BeanDefinition(XML文件中对bean的描述);
二、ApplicationContext:
是一个功能更加全面的容器,一般我们直接使用这个容器;
ApplicationContext接口继承了BeanFactory接口,所以,ApplicationContext实现了getBean方法;
BeanFactory与ApplicationContext实例化时机的区别:
beanfactory容器:容器在启动的时候,并不会实例化bean,只有当用户调用getBean()方法的时候才会对配置好的bean进行实例化;
ApplicationContext容器:当容器启动之后,容器就已经实例化好了所有配置的bean;
如何延迟实例化:
对于ApplicationContext容器启动便进行实例化bean,我们可以通过以下的两种方式来延迟实例化:
1,可以在bean元素配置lazy-init=true来让bean延迟实例化;
2,可以在beans元素配置default-lazy-init=true来让这个beans里面所有的bean延迟实例化;