Spring之推断构造方法

Spring在基于某个类生成Bean的过程中,需要利用该类的构造方法来实例化得到一个对象

  1. 如果一个类只存在一个构造方法,不管该构造方法是无参构造方法,还是有参构造方法,Spring都会用这个构造方法
  2. 如果一个类存在多个构造方法
    a. 这些构造方法中,存在一个无参的构造方法,那么Spring就会用这个无参的构造方法
    b. 这些构造方法中,不存在一个无参的构造方法,那么Spring就会报错
    

Spring的设计思想是这样的:

  1. 如果一个类只有一个构造方法,那么没得选择,只能用这个构造方法
  2. 如果一个类存在多个构造方法,Spring不知道如何选择,就会看是否有无参的构造方法,因为无参构造方法本身表示了一种默认的意义
  3. 如果某个构造方法上加了@Autowired注解,那就表示程序员告诉Spring就用这个加了注解的方法,那Spring就会用这个加了@Autowired注解构造方法。

如果Spring选择了一个有参的构造方法,Spring在调用这个有参构造方法时,需要传入参数时,Spring会根据入参的类型和入参的名字去Spring中找Bean对象(以单例Bean为例,Spring会从单例池那个Map中去找)

1. 先根据入参类型找,如果只找到一个,那就直接用来作为入参
2. 如果根据类型找到多个,则再根据入参名字来确定唯一一个
3. 最终如果没有找到,则会报错,无法创建当前Bean对象

确定用哪个构造方法,确定入参的Bean对象,这个过程就叫做推断构造方法。

相关推荐

  1. Spring推断构造方法

    2024-01-05 21:12:02       28 阅读
  2. Spring推断构造方法源码解析

    2024-01-05 21:12:02       9 阅读
  3. Spring设计模式工厂方法

    2024-01-05 21:12:02       31 阅读
  4. spring源码分析上下文构建

    2024-01-05 21:12:02       11 阅读
  5. 二、Spring源码学习prepareRefresh方法

    2024-01-05 21:12:02       22 阅读
  6. 九、Spring源码学习initApplicationEventMulticaster方法

    2024-01-05 21:12:02       18 阅读
  7. Spring设计模式-实战篇模板方法模式

    2024-01-05 21:12:02       19 阅读
  8. 十一、Spring源码学习registerListeners方法

    2024-01-05 21:12:02       16 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-05 21:12:02       17 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-05 21:12:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-05 21:12:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-05 21:12:02       18 阅读

热门阅读

  1. 电商API连接升级:飞书集成助力营销系统

    2024-01-05 21:12:02       38 阅读
  2. How to collect data

    2024-01-05 21:12:02       46 阅读
  3. 中华人民共和国海关总署下载179号数据对接

    2024-01-05 21:12:02       43 阅读
  4. docker实战:安装redis

    2024-01-05 21:12:02       43 阅读
  5. while循环

    2024-01-05 21:12:02       40 阅读
  6. Leetcode 超难题目 Hard

    2024-01-05 21:12:02       39 阅读
  7. 前端深拷贝

    2024-01-05 21:12:02       35 阅读
  8. Linux 网络工具

    2024-01-05 21:12:02       36 阅读