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

    <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>
    

      

  • 相关阅读:
    java中栈内存和堆内存的简单理解
    java中构造函数与一般函数的区别

    另一部漫画
    海边的卡夫卡
    11-12
    这篇大概值一百万吧
    我的千岁寒
    11-9
    嗯……………股票已经涨的我不想上班了
  • 原文地址:https://www.cnblogs.com/rollenholt/p/2835270.html
Copyright © 2011-2022 走看看