spring Bean的创建流程(简单版)
1.整体流程
- -》getBean方法
- -》构造推断(无参还是有参)
- -》普通对象
- -》依赖注入(@Autowire)
- -》初始化前(@PostConstruct)
- -》初始化(是否实现了initializationBean,重写aftePropertySet方法)
- -》初始化后(AOP)
- -》代理对象
- -》单例池(是否单例)
- -》返回Bean
2.构造方法推断
- 默认是无参构造
- 当只存在1个有参构造时,采用有参构造
- 当显示的写了有参构造和无参构造,采用无参构造
- 当有多个有参构造而没有无参构造时,报错
3.依赖注入
采用先byType后byName确定要注入的Bean,@Autowire注解可以卸载成员变量或者成员方法上(对参数进行注入)
- 如果类型一致的Bean在容器中只有1个,直接返回
- 如果类型一致的Bean有多个,再次筛选名称,只有1个可以返回
- 如果类型一致的Bean有多个,再次筛选名称,有多个相同名称的则报错
3.单例Bean和单例模式的区别?
单例Bean是使用一个Map实现的 <key:“beanName”,value:“beanObject”>, 相同类型并且相同名称的Bean在Spring容器中只有1个
单例模式:java中最简单的设计模式,属于创建型模式,提供了创建对象的最佳方式
实现:单例类创建对象,确保只有单个对象被创建,并且提供这个单例的全局访问点

浙公网安备 33010602011771号