本文共 2794 字,大约阅读时间需要 9 分钟。
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.
例子如下:
1 2 3 4 5 6 7 8 9 | public class Customer { private int type; private String action; private String Country; //... } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | < beans xmlns="" xmlns:xsi="" xsi:schemaLocation=" "> < 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 > |
1 2 3 4 5 6 7 8 9 10 11 12 | 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,
1 | Customer cust = (Customer)context.getBean( "BaseCustomerMalaysia" ); |
类似于java的抽象类,我们可以有:(注意abstract="true")
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | < beans xmlns="" xmlns:xsi="" xsi:schemaLocation=" "> < 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 > |
现在当你运行:
1 | Customer cust = (Customer)context.getBean( "BaseCustomerMalaysia" ); |
将会出现:
org.springframework.beans.factory.BeanIsAbstractException: Error creating bean with name 'BaseCustomerMalaysia': Bean definition is abstract
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | < beans xmlns="" xmlns:xsi="" xsi:schemaLocation=" "> < 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 > |
也可以重写值:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | < beans xmlns="" xmlns:xsi="" xsi:schemaLocation=" "> < 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 > |
转载地址:http://znhpl.baihongyu.com/