Spring自动装配模式(三)

Spring自动装配模式三:byType的解析

如果容器中存在一个与指定属性类型相同的bean,那么将与该属性自动装配。如果存在多个该类型的bean,那么将会抛出异常,并指出不能使用byType方式进行自动装配。若没有找到相匹配的bean,则什么事都不发生,属性也不会被设置。如果你不希望这样,那么可以通过设置dependency-check="objects"Spring抛出异常。

配置文件如下:

<bean id="employee" class="spr.bean.Employee" scope="prototype">

<property name="name"><value></value> </property>

<property name="sex" value=""></property>

</bean>

<bean id="cboss" class="spr.bean.CBoss" scope="prototype" autowire="byType" >

<property name="name" value="RedArmy"/>

</bean>

spr.bean.CBoss代码

package spr.bean;

public class CBoss {

/**姓名*/

private String name;

/**正式员工*/

private Employee employee;

/**小时工*/

private HourEmployee houremployee;

/**省略相应set get方法*/

}

spr.bean.Employee代码

package spr.bean;

public class Employee {

/**员工姓名*/

public String name;

/**员工性别*/

public String sex;

/**省略相应的set get方法*/

}

注意:类型匹配指的是class 中的Employee匹配

在配置文件中 使用byType类型时,相同类型的实例只能存在一个。 如果存在多个该类型的bean,那么将会抛出异常       org.springframework.beans.factory.UnsatisfiedDependencyException

原因是:

org.springframework.beans.factory.NoSuchBeanDefinitionException: No unique bean of type [spr.bean.Employee] is defined   并指出不能使用byType方式进行自动装配

bytype类型相同可以匹配

  父类与子类匹配的方式是:子类自动装载成父类的对象。

  接口与实现类:实现类的对象可以自动装载到接口的对象。否则会出现空指针异常。

<!--EndFragment-->

你可能感兴趣的:(spring,bean,prototype)