• 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>  
  • 相关阅读:
    使用手机游戏的新闻推送
    win8.1 64位环境建设android开发环境
    LeetCode: Multiply Strings. Java
    Thread.join()分析方法
    字幕效果的幻灯片出现在网站上的图片
    JAVA技术交流群
    Android使得手机拍照功能的发展(源共享)
    领导基础课程
    Mysql开启远程连接方法
    mysql远程连接命令
  • 原文地址:https://www.cnblogs.com/hmy-1365/p/6073165.html
Copyright © 2020-2023  润新知