Spring 有哪些自动装配的方式?

什么是自动装配?

Spring IOC容器了解所有Bean的配置信息,并且通过Java反射机制可以获取实现类的结构信息,例如构造函数和属性等。在掌握了这些Bean信息之后,Spring IOC容器可以根据一定的规则自动为容器中的Bean进行装配,无需显式配置依赖关系。

通过使用Spring提供的自动装配方式,可以根据一些规则自动完成Bean的装配。<bean>元素提供了一个用于指定自动装配类型的属性:autowire="<自动装配类型>"

Spring提供了哪几种自动装配类型?

  • byName:根据名称进行自动匹配。例如,如果Boss有一个名为"car"的属性,并且容器中恰好存在一个名为"car"的Bean,那么Spring会自动将该Bean装配给Boss的car属性。
  • byType:根据类型进行自动匹配。例如,如果Boss有一个属性类型为Car的属性,并且容器中恰好存在一个类型为Car的Bean,那么Spring会自动将该Bean装配给Boss的该属性。
  • constructor:与byType类似,但适用于构造函数注入。如果Boss有一个构造函数,该构造函数包含一个Car类型的参数,如果容器中存在一个Car类型的Bean,Spring会自动将该Bean作为Boss构造函数的参数进行装配;如果容器中没有找到与构造函数参数类型匹配的Bean,Spring将抛出异常。
  • autodetect:根据Bean的自省机制确定使用byType还是constructor进行自动装配。如果Bean提供了默认构造函数,则使用byType;否则,使用constructor。

标签: java, Java面试题, Java问题合集, Java编程, Java问题精选, Java常见问题