现在的位置: 首页 > 综合 > 正文

Spring依赖实现

2013年07月04日 ⁄ 综合 ⁄ 共 853字 ⁄ 字号 评论关闭

        Spring并不能从配置文件中读取bean的依赖关系,此时,若存在bean B依赖于bean A,则必须按下列顺序执行代码:

A a = (A) bf.getBean("a");
B b = (B) bf.getBean("b");

        否则将出错。

        替代方案之一是定义bean B时添加depends-on属性:

<bean id="a" class="..." />
<bean id="b" class="..." depends-on="a" />

        替代方案之二是使用自动装配,Spring支持以下自动装配方式:

        (1) byName,到BeanFactory中找到与属性名同名的bean;

        (2) byType,到BeanFactory中找到与属性类别相同的bean;

        (3) constructor,与byType类似,只是它使用构造方法而不是设置方法来进行注入,Spring只会匹配参数最多的构造方法。例如,假设有三个构造方法,A无参数,B有一个参数类型为TestClass,C有两个参数,类型分别为TestClass和TempClass,Spring在装配该类时,会首先到BeanFactory中寻找TestClass和TempClass,若均有,则匹配构造方法C;若只有TestClass,则匹配构造方法B;若均无,则匹配构造方法A;

        (4) autodetect,从byType和constructor中自动选择,若bean有一个默认的(无参的)构造方法,则使用byType,否则使用constructor。

        请在任何正式项目中不惜代价地避免自动装配。

        当创建bean实例并关联依赖时,Spring默认不检查每个依赖bean的属性是否真的有值,但配置dependency-check时,可以有以下三种检查方式:

        (1) simple,只检查基础类型及集合是否有值;

        (2) objects,检查simple外的其他;

        (3) all,检查所有。

抱歉!评论已关闭.