一、SpringIoC核心容器 并根据id获取对象
ApplicationContext的三个实现类
一、
ClassPathXmlApplicationContext: 他可以加载类路径下的配置文件(更常用)
ApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml");
二、
FileSystemXmlApplicationContext:可以加载磁盘下任意位置文件(前提有访问权限)
ApplicationContext ac = new FileSystemXmlApplicationContext("C:/bean/beans.xml");
三、
AnnotationConfigApplicationContext :读取注解创建容器
核心容器两个接口引出的问题:
ApplicationContext : 单列对象使用
他在创建核心容器时,创建对象采用立即加载的方式。也就是说,只要以读取完配置文件就马上创建配置文件中配置的对象
BeanFactory : 多列对象使用
Resource re = new ClassPathResoueces(“bean.xml”);
BeanFactory bf = new XmlBeanFactory(re);
他在创建核心容器时,创建对象采用的是延迟加载,什么时候用到对象 什么时候创建对象(类似于单列模式中懒汉模式)
bean的作用域范围
bean的scope属性:
取值:常用单列和多列
singleton:单列(默认值)
prototype:多列
request:作用于web请求
session:作用于web会话
global-session:全局会话(负载均衡会用到)
bean对象的生命周期:
单列对象:
出生:当容器创建时对象出生
活着:容器在,对象在
死亡:容器销毁 对象死亡
总结:单列对象的生命周期和容器一样
多列对象:
出生:当我们使用对象时 spring框架生成
活着:对象只要在被使用 就是活着
死亡:当对象长时间不用 并且没有别的对象引用 ,交给jvm垃圾回收机制