一、构造函数使用问题

未指定构造方法情况下
1.一个类中如果仅有一个(无参或者有参)构造方法,则Spring实例化这个类时,使用当前构造方法进行实例化
2.如果有多个构造方法,默认情况下使用无参构造方法,如果不存在无参构造方法,则报错。因不确定使用那个构造方法。
指定特定构造方法
多个构造函数时,在构造函数上加@Autowired即可指定使用的构造方法
有参构造方法参数获取
需要重视的是,如果Spring选择了一个有参的构造方法,Spring在调用这个有参构造方法时,需要传入参数,那这个参数是怎么来的呢?
Spring会根据入参的类型和入参的名字去Spring中找Bean对象(以单例Bean为例,Spring会从单例池那个Map中去找):

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

问题:FactoryBean与@Bean创建创建bean的区别(需要测试一下)
相同点
用户都需要使用new关键字创建对象。
不同点
@Bean对创建的bean走正常的初始化生命周期(初始化前、初始化后等整个Spring生命周期)
FactoryBeam方式中,实现FactoryBean接口走正常的生命周期。但是getObject获取的对应的对象,仅执行初始化后过程(为了支持getObject所获取对象的AOP功能)。