- 一、实例化前就通过扩展节点将对象实例化出来,会导致什么结果?
- 二、spring实例化对象的方式有哪几种?@Bean使用的是哪一种?
- 三、spring推断构造方法的执行逻辑是怎么样的?
一、实例化前就通过扩展节点将对象实例化出来,会导致什么结果?
二、spring实例化对象的方式有哪几种?@Bean使用的是哪一种?
- 1、该实力对象中需要依赖注入的属性全部为空,spring不会对该实例对象进行依赖注入;
- 2、该对象会跳过实例化后的一系列步骤,直接到达初始化后的阶段。也就意味着某些初始化前、初始化过程的的步骤是不能执行的。
三、spring推断构造方法的执行逻辑是怎么样的?spring实例化对象的方式大方向上有两种,一种是通过实现Supplier接口来获取实例对象,另一种是通过factoryMethod创建实例对象;
@Bean使用的是factoryMethod来创建实例对象的;
需要注意的是如果@Bean修饰的方法是static修饰,那么spring不会创建工厂对象来使用工厂方法创建实例,而是会在当前类的内部生成一个实例化对象的方法来创建当前对象
如果该对象中只有一个构造方法(无论是有参构造还是无参构造),那么spring会默认使用该方法来进行对象的实例化创建。如果有一个无参构造和多个有参数构造,spring会默认使用无参数构造方法来进行实例化对象。如果有多个有参数构造,但是没有无参构造。会判断是否存在一个有参构造方法上含有@Autowired注解,有的话就会使用含有该注解的方法来实例化对象,没有的话则抛出异常。



