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="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 >
|
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="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 >
|
现在当你运行:
1
|
Customer cust = (Customer)context.getBean( "BaseCustomerMalaysia" );
|
将会出现:
org.springframework.beans.factory.BeanIsAbstractException: Error creating bean with name 'BaseCustomerMalaysia': Bean definition is abstract
Pure Inheritance Template
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
< 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 >
|
也可以重写值:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
< 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 >
|
==============================================================================
本文转自被遗忘的博客园博客,原文链接:http://www.cnblogs.com/rollenholt/archive/2012/12/27/2835130.html,如需转载请自行联系原作者