一、Bean的初始化过程
二、Spring Bean的生命周期
1.通过XML、Java annotation(注解)以及Java Configuration(配置类)等方式加载Spring Bean
2.BeanDefinitionReader:解析Bean的定义。在Spring容器启动过程中,会将Bean解析成Spring内部的BeanDefinition结构;理解为:将spring.xml中的<bean>标签转换成BeanDefinition结构有点类似于XML解析
3.BeanDefinition:包含了很多属性和方法。例如:id、class(类名)、scope、ref(依赖的bean)等等。其实就是将bean(例如<bean>)的定义信息存储到这个对应BeanDefinition相应的属性中
例如:
<bean id="" class="" scope=""> -----> BeanDefinition(id/class/scope)
4.BeanFactoryPostProcessor:是Spring容器功能的扩展接口
三、 Bean的单例与多例理论部分
单例:
优点:减少内存的使用,也Spring中bean默认的创建方式
缺点:会存在变量污染的问题
多例:
优点:不存在变量污染
缺点:耗内存
单例与多例选择:
是否会对bean对象中的属性进行修改
如果会“:那么多例
如果不会:单例
单例的生命周期:
容器生对象生
多例的生命周期:
bean在使用的时候才进行初始化
销毁与容器无关,与Java的垃圾回收机制