• Spring中bean配置的继承


    In Spring, the inheritance is supported in bean configuration for a bean to share common values, properties or configurations.

    A child bean or inherited bean can inherit its parent bean configurations, properties and some attributes. In additional, the child beans are allow to override the inherited value.

    例子如下:

    public class Customer {
     
    	private int type;
    	private String action;
    	private String Country;
     
    	//...
     
    }
    

      

    <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="BaseCustomerMalaysia" class="com.mkyong.common.Customer">
    		<property name="country" value="Malaysia" />
    	</bean>
     
    	<bean id="CustomerBean" parent="BaseCustomerMalaysia">
    		<property name="action" value="buy" />
    		<property name="type" value="1" />
    	</bean>
     
    </beans>
    

      

    public class App 
    {
        public static void main( String[] args )
        {
        	ApplicationContext context = 
    			new ClassPathXmlApplicationContext("SpringBeans.xml");
     
        	Customer cust = (Customer)context.getBean("CustomerBean");
        	System.out.println(cust);
     
        }
    }
    

      运行结果为:Customer [type=1, action=buy, Country=Malaysia]

    In above example, the ‘BaseCustomerMalaysia’ is still able to instantiate, for example,

    Customer cust = (Customer)context.getBean("BaseCustomerMalaysia");
    

      类似于java的抽象类,我们可以有:(注意abstract="true")

    <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="BaseCustomerMalaysia" class="com.mkyong.common.Customer" abstract="true">
    		<property name="country" value="Malaysia" />
    	</bean>
     
    	<bean id="CustomerBean" parent="BaseCustomerMalaysia">
    		<property name="action" value="buy" />
    		<property name="type" value="1" />
    	</bean>
     
    </beans>
    

      现在当你运行:

    Customer cust = (Customer)context.getBean("BaseCustomerMalaysia");
    

      将会出现:

    org.springframework.beans.factory.BeanIsAbstractException: 
    	Error creating bean with name 'BaseCustomerMalaysia': 
    	Bean definition is abstract

    Pure Inheritance Template

    <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="BaseCustomerMalaysia" abstract="true">
    		<property name="country" value="Malaysia" />
    	</bean>
     
    	<bean id="CustomerBean" parent="BaseCustomerMalaysia" 
    	    class="com.mkyong.common.Customer">
     
    		<property name="action" value="buy" />
    		<property name="type" value="1" />
    	</bean>
     
    </beans>
    

      也可以重写值:

    <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="BaseCustomerMalaysia" class="com.mkyong.common.Customer" abstract="true">
    		<property name="country" value="Malaysia" />
    	</bean>
     
    	<bean id="CustomerBean" parent="BaseCustomerMalaysia">
    	    <property name="country" value="Japan" />
    		<property name="action" value="buy" />
    		<property name="type" value="1" />
    	</bean>
     
    </beans>
    

      



  • 相关阅读:
    Ubuntu14.04LTS系统QQ的安装:pidgin-lwqq
    Ubuntu14.04LTS系统输入法的安装
    Linux系统安装及初始化(ubuntu14.04)
    创建RAID并永久挂载RAID
    磁盘管理和磁盘配额
    用户账号组账号概述
    安装及管理程序
    目录和文件管理
    Vi编辑器的工作模式
    Linux命令及使用方法
  • 原文地址:https://www.cnblogs.com/rollenholt/p/2835130.html
Copyright © 2020-2023  润新知