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

      



  • 相关阅读:
    【索引】SyntaxHighlighter 使用参考
    【索引】博客心得
    SyntaxHighlighter 使用参考(一) 概述
    PEGA 十合一吉他控制器连接电脑玩《吉他英雄3》
    从SourceForge上获取CVS管理的开源代码
    从SourceForge上获取SVN管理的开源代码
    整数哈希介绍
    回文时间
    D2js 是如何处理并发的
    Windows 安装JRuby 生成 war 到 tomcat 运行
  • 原文地址:https://www.cnblogs.com/rollenholt/p/2835130.html
Copyright © 2020-2023  润新知