7.7 创建Bean的3种方式 7.7.1 使用构造器创建Bean实例

7.7 创建Bean的3种方式

在大多数情况下, Spring容器直接通过new关键字调用构造器来创建Bean实例,而clas属性指定了Bean实例的实现类。因此,<bean.元素必须指定Bean实例的class属性,但这并不是实例化Bean的唯一方法.
Spring支持使用如下方式来创建Bean:

  1. 调用构造器创建Bean
  2. 调用静态工厂方法创建Bean
  3. 调用实例工厂方法创建Bean

7.7.1 使用构造器创建Bean实例

使用构造器来创建Bean实例是最常见的情况,如果不采用构造注入, Spring底层会调用Bean类的无参数构造器来创建实例,因此要求该Bean类提供无参数的构造器。在这种情况下, class元素是必需的(除非采用继承), class属性的值就是Bean实例的实现类。

采用设值注入时

如果采用设值注入, Spring容器将使用默认的构造器来创建Bean实例, SpringBean实例的所有属性执行默认初始化,即:

  • 所有基本类型的值初始化为0false;
  • 所有引用类型的值初始化为null;

接下来, BeanFactory会根据配置文件决定依赖关系,先实例化被依赖的Bean实例,然后为Bean注入依赖关系,最后将一个完整的Bean实例返回给程序。

采用构造注入时

如果采用构造注入,则要求配置文件为<bean>元素添加<constructor-arg>子元素,每个<constructor-arg>子元素配置一个构造器参数。 Spring容器将使用带对应参数的构造器来创建Bean实例, Spring调用构造器传入的参数即可用于初始化Bean的实例变量,最后也将一个完整的Bean实例返回给程序。