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

      

  • 相关阅读:
    深入理解javascript原型和闭包(10)——this
    深入理解javascript原型和闭包(9)——简述【执行上下文】下
    深入理解javascript原型和闭包(8)——简述【执行上下文】上
    深入理解javascript原型和闭包(7)——原型的灵活性
    golang 处理 json 结构体
    git push 时用户的配置
    vscod如何自定义 python虚拟环境
    Python实现图片的base64编码
    解决vscode中golang插件依赖安装失败问题
    (转)vscode实现markdown流程图
  • 原文地址:https://www.cnblogs.com/rollenholt/p/2835270.html
Copyright © 2020-2023  润新知