5.6.2 元素的dependency-check属性
Autowiring策略并不是***的,因为受管Bean所需要的协作者可能没有如期找到。为了确认协作者是否找到,即完成依赖性检查,我们可以启用暴露的dependency-check属性。表5-2详细给出了dependency-check属性的具体含义。
表5-2 dependency-check属性
dependency-check属性值
具体含义
none
不去检查受管Bean的依赖性,这是受
管Bean的默认行为
simple
仅仅对Java原型(primitive)和集合类型进行检查
objects
仅仅对协作者(对象类型)进行检查
all
同时对Java原型(primitive)、集
合类型、协作者(对象类型)进行检查
default
同级别指定的一致
位于autowiringdemo项目中的DependencyCheckDemo所使用的dependency-check.xml配置文件摘录如下。
此时,dependency-check属性使用了objects取值。对于TestBean而言,这意味着hw1和hw2属性的设值将被检查。一旦开发者没有为hw1或hw2提供相应的取值,则运行期会通不过依赖性检查。同理,如果将objects换成simple,则仅仅会检查str的依赖性。如果使用all取值,则所有的属性都需要通过依赖性检查。另外,开发者是否注意到与元素的差异性。同起到的作用完全不同,前者是为目标属性提供null值,而后者是为目标属性提供空字符串("")。
揭开依赖性检查的本质
注意,在实施依赖性检查时,DI容器仅仅会检查各属性对应的设值方法是否被调用,而不会去关心开发者为这一设值方法提供的具体取值。比如,即使上述hw2属性取值为null,但还是能够通过DI容器的依赖性检查,因为setHw2设值方法确实被调用了。
【责任编辑:云霞 TEL:(010)68476606】
点赞 0