在Spring中,支持 5 种装配模式。


  • no – 缺省情况下,自动配置是通过“ref”属性手动设定
  • byName – 根据属性名称自动装配。如果一个bean的名称和其他bean属性的名称是一样的,将会自装配它。
  • byType – 按数据类型自动装配。如果一个bean的数据类型是用其它bean属性的数据类型,兼容并自动装配它。
  • constructor – 在构造函数参数的byType方式。
  • autodetect – 如果找到默认的构造函数,使用“自动装配用构造”; 否则,使用“按类型自动装配”。

①.在没有配置autowire属性的情况下,缺省为no,即必须通过ref属性指定属性的值


手动装配我们通常在配置文件中进行实现,以下代码就是手动装配:



<bean id="helloWorldService" class="com.jeff.example.demo1.HelloWorldService"><property name="helloWorld" ref="structsHelloWorld"></property>


②.在autowire配置为byName的情况下,spring容器会自动查找bean中id与自身属性的name一致的相匹配,未找到时抛出空指针异常。



      需要注意的是,set方法必须为public,否则报NullpointException。



③.在autowire配置为byType的情况下,spring容器会自动查找bean类型中自身属性类型一致的相匹配,未找到时抛出空指针异常。






   类型自动装配的意思是如果一个bean的数据类型与其他的bean属性的数据类型相同,将会自动兼容装配它。当然要求只能配置一个某



<bean id="customer" class="com.hebeu.model.Customer" autowire="byType"></bean> <bean id="bean1" class="com.hebeu.model.Address"> <property name="fulladdress" value="YiLong Road, CA 188"></property> </bean> <bean id="bean2" class="com.hebeu.model.Address"> <property name="fulladdress" value="YiLong Road, CA 188"></property> </bean>


④.通过构造方法中的参数类型与bean中类型与自身参数类型去匹配然后自动装配。如找到多个会报NoUniqueBeanDefinitionException



所以必须要有构造函数,否则因为找不到而报空指针异常。



<bean id="helloWorldService" class="com.jeff.example.demo1.HelloWorldService" autowire="constructor"/><!-- 参数类型为HelloWorld,而下面两个bean都实现了此接口 --> <bean id="springHelloWorld" class="com.jeff.example.demo1.SpringHelloworld"/><!--不注释报错 <bean id="structsHelloWorld" class="com.jeff.example.demo1.StructsHelloworld"/> -->