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中最简单的设计模式,属于创建型模式,提供了创建对象的最佳方式

    实现:单例类创建对象,确保只有单个对象被创建,并且提供这个单例的全局访问点

posted @   yky_xukai的胡思乱想  阅读(83)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程
点击右上角即可分享
微信分享提示