Spring的属性依赖检查

spring支持4种依赖检查:默认的是none

  • none – No dependency checking.
  • simple – If any properties of primitive type (int, long,double…) and collection types (map, list..) have not been set, UnsatisfiedDependencyException will be thrown.
  • objects – If any properties of object type have not been set, UnsatisfiedDependencyException will be thrown.
  • all – If any properties of any type have not been set, an UnsatisfiedDependencyException will be thrown.

举个例子

    public class Customer
    {
        private Person person;
        private int type;
        private String action;  

        //getter and setter methods
    }  
    public class Person
    {
        private String name;
        private String address;
        private int age;  

        //getter and setter methods
    }  

1. none dependency checking

[html] view plain copy
print?在CODE上查看代码片派生到我的代码片

    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">  

        <bean id="CustomerBean" class="com.mkyong.common.Customer" >
            <property name="action" value="buy" />
        </bean>  

        <bean id="PersonBean" class="com.mkyong.common.Person">
            <property name="name" value="mkyong" />
            <property name="address" value="address ABC" />
            <property name="age" value="29" />
        </bean>  

    </beans>  

2. simple dependency checking

    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">  

        <bean id="CustomerBean" class="com.mkyong.common.Customer"
             dependency-check="simple">  

            <property name="person" ref="PersonBean" />
            <property name="action" value="buy" />
        </bean>  

        <bean id="PersonBean" class="com.mkyong.common.Person">
            <property name="name" value="mkyong" />
            <property name="address" value="address ABC" />
            <property name="age" value="29" />
        </bean>  

    </beans>  

注意此处type字段故意没有设置,这样会出现UnsatisfiedDependencyException

org.springframework.beans.factory.UnsatisfiedDependencyException:

Error creating bean with name ‘CustomerBean‘

defined in class path resource [config/Spring-Customer.xml]:

Unsatisfied dependency expressed through bean property ‘type‘:

Set this property value or disable dependency checking for this bean.

3. objects dependency checking

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">  

    <bean id="CustomerBean" class="com.mkyong.common.Customer"
         dependency-check="objects">  

        <property name="action" value="buy" />
        <property name="type" value="1" />
    </bean>  

    <bean id="PersonBean" class="com.mkyong.common.Person">
        <property name="name" value="mkyong" />
        <property name="address" value="address ABC" />
        <property name="age" value="29" />
    </bean>  

</beans> 

此处故意没有设置”person“属性,会出现UnsatisfiedDependencyException

org.springframework.beans.factory.UnsatisfiedDependencyException:

Error creating bean with name ‘CustomerBean‘

defined in class path resource [config/Spring-Customer.xml]:

Unsatisfied dependency expressed through bean property ‘person‘:

Set this property value or disable dependency checking for this bean.

4. all dependency checking

    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">  

        <bean id="CustomerBean" class="com.mkyong.common.Customer"
             dependency-check="all">  

            <property name="action" value="buy" />
        </bean>  

        <bean id="PersonBean" class="com.mkyong.common.Person">
            <property name="name" value="mkyong" />
            <property name="address" value="address ABC" />
            <property name="age" value="29" />
        </bean>  

    </beans>  

Global default dependency checking:

default-dependency-check="all"

    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"
        default-dependency-check="all">  

        <bean id="CustomerBean" class="com.mkyong.common.Customer">
            <property name="action" value="buy" />
            <property name="type" value="1" />
        </bean>  

        <bean id="PersonBean" class="com.mkyong.common.Person">
            <property name="name" value="mkyong" />
            <property name="address" value="address ABC" />
            <property name="age" value="29" />
        </bean>  

    </beans>  
时间: 2024-11-14 12:28:06

Spring的属性依赖检查的相关文章

spring中的依赖检查

4个依赖检查支持的模式: none – 没有依赖检查,这是默认的模式. simple – 如果基本类型(int, long,double-)和集合类型(map, list..)的任何属性都没有设置,UnsatisfiedDependencyException将被抛出. objects – 如果对象类型的任何属性都没有设置,UnsatisfiedDependencyException将被抛出. all – 如果任何类型的任何属性都没有被设置,UnsatisfiedDependencyExcepti

spring的依赖检查(dependency-check属性)

依赖检查要和自动装配结合使用,没有自动装配也就没有检查的必要了. <bean id ="HelloWorld" class="com.jnotnull.HelloWorld"   autowire="autodectect" dependency-check="none"> dependency-check有四个值:none,simple,object,all.默认不检查 1 none 不检查 2 simple 对

Spring使用@Required注解依赖检查

Spring依赖检查 bean 配置文件用于确定的特定类型(基本,集合或对象)的所有属性被设置.在大多数情况下,你只需要确保特定属性已经设置但不是所有属性.. 对于这种情况,你需要 @Required 注解,请参见下面的例子: @Required示例 Customer对象,适用@Required在 setPerson()方法,以确保 person 属性已设置. package com.yiibai.common; import org.springframework.beans.factory.

spring IoC (七)Bean的依赖检查

在使用Spring的时候,如果应用设计比较复杂,那么在这个应用中,IoC管理的Bean的个数可能非常多, 这些Bean之间的相互依赖关系也会非常复杂.在一般情况下,Bean的依赖注入是在应用第一次向容器索取Bean 的时候发生,这个时候,不能保证注入一定能够成功,如果需要重新检查这些依赖关系的有效性,会是意见很 繁琐的事情.为了解决这样的问题,在Spring IoC容器中,设计了一个依赖检查特性,需要在Bean定义中设置 dependency-check属性来指定依赖检查模式即可,可以设置为no

Spring 属性依赖注入

1.1    属性依赖注入 依赖注入方式:手动装配 和 自动装配 手动装配:一般进行配置信息都采用手动 基于xml装配:构造方法.setter方法 基于注解装配: 自动装配:struts和spring 整合可以自动装配 byType:按类型装配 byName:按名称装配 constructor:构造装配, auto: 不确定装配. 一.构造方法注入 User.java public class User { private Integer uid; private String username

Spring之循环依赖

转:http://my.oschina.net/tryUcatchUfinallyU/blog/287936 概述 如何检测循环依赖 循环依赖如何解决 Spring如何解决循环依赖 主要的几个缓存 主要步骤 Spring不能完全解决的循环依赖问题 面对Spring不能完全解决的现状,我们该如何处理 概述 入职的时候学习spring研究过循环依赖,现在再回顾下,发现啥都忘记了,还是得总结下来,故总结该文. 本文主要解决如下问题: 1.何为循环依赖 2.如何检测循环依赖 3.循环依赖可以如何解决 4

【转】Spring Bean属性解析

转载自:http://wenku.baidu.com/view/30c7672cb4daa58da0114ae2.html Bean所以属性一览: <bean id="beanId"(1) name="beanName"(2) class="beanClass"(3) parent="parentBean"(4) abstract="true | false"(5) singleton="t

spring bean属性及子元素使用总结

spring bean属性及子元素使用总结 2016-08-03 00:00 97人阅读 评论(0) 收藏 举报  分类: Spring&SpringMVC(17)  版权声明:本文为博主原创文章,未经博主允许不得转载. spring框架中主要有四种标签bean.alias.import.beans,其中bean标签是其他标签的基础,此文主要对bean标签的属性及其子元素进行讨论,废话不多,请往下看. 一.bean标签的属性 1)scope:用来配置spring bean的作用域 2)singl

Spring配置文件解析-依赖注入

转:http://blog.csdn.net/zzh87615/article/details/5915658 ————————————————————————————————————- 1.构造器注入基于构造器的DI通过调用带参数的构造器来实现,每个参数代表着一个依赖.此外,还可通过给stattic工厂方法传参数来构造bean.构造器参数解析根据参数类型进行匹配,如果bean的构造器参数类型定义非常明确,那么在bean被实例化的时候,bean定义中构造器参数的定义顺序就是这些参数的顺序,依次进