Spring bean的自动装配属性

时间:2022-07-09 20:02:23

bean的自动装配属性能简化xml文件配置.

bean 的自动装配属性分为四种:

1.byName

2.byTyoe

3.constructor

4. autodetect

byName:

它查找配置文件中的的bean的id 或者name 和本bean中的成员属性名相同的bean 自动装配 所以不用再给本bean添加peoperty标签

例:有两个类

public Class  Person{

}

public Class Customer{

  private Person p;

  public setPerson(Person ps){

    this.p=ps;

  }

}

传统的xml配置为

<bean id="p" class="com.***.Person "/ >

<bean id="customer" class="com.***.Customer" >

<property name="p" ref="p"></property>   //将(ref)p实例化到bean的(name)p属性,达到方法中setPerson的目的

</bean>

byName的自动装配方法为

<bean id="p" class="com.***.Person "/ >

<bean id="customer" class="com.***.Customer"  autowrite="byName"/> //因为id=p的类的实例化名正好和com.***.Customer类的属性 P的成员变量名相同 所以被自动装配到 customer这个bean里面

byType:

方法同上:只不过他搜索的是成员的类型和配置文件中的某个bean的类型相同 则自动装配 ,但是要注意一点:如果出现多个相同类型的bean将抛出异常,处理方法为。设置不需要载入的bean 的属性 primary="false"(取消首选) 或 autowriter-candidate="false"(排除)

constructor:
试图在容器中寻找与需要自动装配的bean的构造函数参数一致的一个或多个bean,如果没找到则抛出异常

autodetect:
首先尝试使用constructor来自动装配,然后再使用byType方式。

默认自动装配设置 :

如果想要为它所创建的所有bean应用相同的自动装配策略来简化配置是 可以在根元素<beans> 上增加 default-autowire属性

<beans default-autowire="byName"> ...................</beans>