zoukankan      html  css  js  c++  java
  • 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>  
  • 相关阅读:
    如何用UE(UltraEdit)删除重复行?--转
    spring源码分析之<context:component-scan/>vs<annotation-config/>
    annotation-config vs component-scan – Spring Core--转
    spring源码分析之spring注解@Aspect是如何工作的?
    Spring之LoadTimeWeaver——一个需求引发的思考---转
    Linux上的free命令详解
    MVC/MVP/MVVM区别——MVVM就是angular,视图和数据双向绑定
    elasticsearch如何安全重启节点
    ES等待任务——是master节点上的task任务
    1. 批量梯度下降法BGD 2. 随机梯度下降法SGD 3. 小批量梯度下降法MBGD
  • 原文地址:https://www.cnblogs.com/hmy-1365/p/6073165.html
Copyright © 2011-2022 走看看