目录
一.bean的初始化过程
1.图文总解析:
2.文字详解Spring Bean的生命周期 :
①.通过XML、Java annotation(注解)以及Java Configuration(配置类)
等方式加载Spring Bean
XML加载:例:ApplicationContext ac= new ClassXmlPathApplicationContext("spring.xml");
②.BeanDefinitionReader:解析Bean的定义。
简单理解:
将spring.xml中的<bean>标签转换成BeanDefinition结构,
有点类似于XML解析
③.BeanDefinition:包含了很多属性和方法。
简单理解:
就是将bean(例如<bean>)的定义信息
存储到这个对应BeanDefinition相应的属性中
④.BeanFactoryPostProcessor:是Spring容器功能的扩展接口。
二.bean的单例与多例模式
①.单例(Spring默认方式):
优点:减少内存的使用
缺点:会存在变量污染的问题
②.多例:
优点:不会存在变量污染的问题
缺点:耗内存
③.选择单例和多例的方式:
是否对bean对象中的属性进行修改
会:单例
不会:多例
三.单例与多例模式的生命周期
单例时:容器销毁instanceFactory对象也销毁
多例时:容器销毁对象不一定销毁,与Java的垃圾回收机制有关