Spring提供了一种依赖检查的功能,可以防止出现配置手误,或者其他出错的可能,使用以来检查可以让系统判断配置文件的依赖注入是否完全有效。
有效的依赖是:如果属性需要普通类型的值,则在Bean的定义中已经设置了合适的值;如果属性需要java对象类型的值,则要么通过自动装配提供有效依赖,要么通过ref注入合作者Bean,要么通过<bean.../>元素指定嵌套Bean。
使用以来检查可以保证Bean的属性得到了正确设置。也许有时候某个Bean的特定属性并不需要设置值,或者某些属性已有默认值,此时采用依赖检查就会出现错误,该Bean就不应该采用依赖检查。
Spring可以为每个Bean单独指定依赖检查,Spring默认不进行依赖检查,可以通过dependency-check指定不同依赖检查策略:
1、none:不进行依赖检查,默认。
2、Simple:对基本类型和集合(除了合作者Bean)进行依赖检查。
3、Objects:仅对合作者Bean进行依赖检查。
4、All:对合作者Bean、基本类型和集合全部进行依赖检查。
(1)、simple
(2)Objects
(3)All
(4)None
有效的依赖是:如果属性需要普通类型的值,则在Bean的定义中已经设置了合适的值;如果属性需要java对象类型的值,则要么通过自动装配提供有效依赖,要么通过ref注入合作者Bean,要么通过<bean.../>元素指定嵌套Bean。
使用以来检查可以保证Bean的属性得到了正确设置。也许有时候某个Bean的特定属性并不需要设置值,或者某些属性已有默认值,此时采用依赖检查就会出现错误,该Bean就不应该采用依赖检查。
Spring可以为每个Bean单独指定依赖检查,Spring默认不进行依赖检查,可以通过dependency-check指定不同依赖检查策略:
1、none:不进行依赖检查,默认。
2、Simple:对基本类型和集合(除了合作者Bean)进行依赖检查。
3、Objects:仅对合作者Bean进行依赖检查。
4、All:对合作者Bean、基本类型和集合全部进行依赖检查。
(1)、simple
<bean id="person" class="net.battier.pojo.Person"
dependency-check="simple">
此处没有设置Bean的一个属性,使用了simple策略的依赖检查将报错
<property name="personName" value="张三"></property>
<property name="personAge" value="18"></property>
<property name="personSex" value="false"></property>
<property name="personDesc" value="他是个男的"></property>
<!-- 引用org -->
<property name="org" ref="organization"></property>
</bean>
(2)Objects
<!-- 雇员Bean
dependency-check="simple":对Bean属性的基本数据类型以来检查
dependency-check="objects":对合作者Bean进行依赖检查
-->
<bean id="person" class="net.battier.pojo.Person"
dependency-check="objects">
<property name="id" value="1"></property>
<property name="personName" value="张三"></property>
<property name="personAge" value="18"></property>
<property name="personSex" value="false"></property>
<property name="personDesc" value="他是个男的"></property>
<!-- 引用org(如果没有配置,则依赖检查机制会警报) -->
<property name="org" ref="organization"></property>
</bean>
(3)All
<!-- 雇员Bean
dependency-check="simple":对Bean属性的基本数据类型以来检查
dependency-check="objects":对合作者Bean进行依赖检查
dependency-check="all":对合作者Bean、基本类型和集合全部进行检查
-->
<bean id="person" class="net.battier.pojo.Person"
dependency-check="all">
<property name="id" value="1"></property>
<property name="personName" value="张三"></property>
<property name="personAge" value="18"></property>
<property name="personSex" value="false"></property>
<property name="personDesc" value="他是个男的"></property>
<!-- 引用org(如果没有配置,则依赖检查机制会警报) -->
<property name="org" ref="organization"></property>
</bean>
(4)None
<!-- 雇员Bean
dependency-check="simple":对Bean属性的基本数据类型以来检查
dependency-check="objects":对合作者Bean进行依赖检查
dependency-check="all":对合作者Bean、基本类型和集合全部进行检查
dependency-check="none":不进行依赖检查(默认)。
-->
<bean id="person" class="net.battier.pojo.Person"
dependency-check="none">
<property name="id" value="1"></property>
<property name="personName" value="张三"></property>
<property name="personAge" value="18"></property>
<property name="personSex" value="false"></property>
<property name="personDesc" value="他是个男的"></property>
<!-- 引用org(如果没有配置,则会空指针异常) -->
<property name="org" ref="organization"></property>
</bean>