• 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>  
  • 相关阅读:
    jdbc和DBeaver客户端连接oracle很慢,初始化连接成功后速度正常
    centos7中vncserver连接失败
    postgres数据库建库、修改owner
    nested exception is org.apache.ibatis.binding.BindingException:
    postgresql导出表insert方式数据
    解决ecllipse注释模板不生效问题
    postgresql 修改表属性,包括新增、修改、删除列
    ssh本机可登陆远端服务器,但远端服务器无法登陆本机
    linux源码安装后,设置动态库路径和环境变量
    valgrind跟踪调试动态库*.so
  • 原文地址:https://www.cnblogs.com/hmy-1365/p/6073165.html
Copyright © 2020-2023  润新知