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.

例子如下:


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>

  

时间: 2024-02-12 14:56:45

Spring中bean配置的继承的相关文章

spring中bean配置和bean注入

1 bean与spring容器的关系 Bean配置信息定义了Bean的实现及依赖关系,Spring容器根据各种形式的Bean配置信息在容器内部建立Bean定义注册表,然后根据注册表加载.实例化Bean,并建立Bean和Bean的依赖关系,最后将这些准备就绪的Bean放到Bean缓存池中,以供外层的应用程序进行调用. 1 bean配置 bean配置有三种方法: 基于xml配置Bean 使用注解定义Bean 基于java类提供Bean定义信息 1.1 基于xml配置Bean  对于基于XML的配置,

Spring中bean的配置

        IOC其实是从我们平常new一个对象的对立面来说的,我们平常使用的对象一般直接使用关键字类new一个对象,坏处很显然,使用new那么就表示当前模块已经不知不觉和new出的对象耦合了,而我们通常都是更高层次的抽象模块调用底层实现模块,这样就产生模块依赖于具体的实现,这与我们JAVA中提倡的面向接口面向抽象编程是相冲突的,而且这样做也带来系统的模块架构问题.很简单的例子,在进行数据库操作的时候,总是业务层调用DAO层,DAO一般采用接口开发,这在一定程度上满足了松耦合,使业务逻辑层不

spring入门(4) spring中Bean的生命周期总结

Spring中Bean的生命周期,在学习spring的过程中bean的生命周期理解对学习spring有很大的帮助,下面我就分别介绍在 ApplicationContext和BeanFactory中Bean的生命周期. 1.在ApplicationContext中Bean的生命周期 生命周 期执行的过程如下: 1.需找所有的bean根据bean定义的信息来实例化bean 2.使用依赖注入,spring按bean 定义信息配置bean的所有属性 3.若bean实现了BeanNameAware接口,工

Spring中Bean的命名问题及ref和idref之间的区别

一直在用Spring,其实对其了解甚少,刚去了解了一下Spring中Bean的命名问题以及ref和idref之间的区别,略作记录,以备后查.   Spring中Bean的命名 1.每个Bean可以有一个id属性,并可以根据该id在IoC容器中查找该Bean,该id属性值必须在IoC容器中唯一: 2.可以不指定id属性,只指定全限定类名,如: <bean class="com.zyh.spring3.hello.StaticBeanFactory"></bean>

【Spring实战】—— 4 Spring中bean的init和destroy方法讲解

本篇文章主要介绍了在spring中通过配置init-method和destroy-method方法来实现Bean的初始化和销毁时附加的操作. 在java中,我们并不需要去管理内存或者变量,而在C或C++中,可以通过new和delete等方式来创建和删除变量或者对象.在Spring中,如果想要对一个bean进行初始化和结束附加一定的操作,则可以使用上述的两个方法来实现. 在介绍这两个方法前,读者需要了解Spring中bean的生命周期,最常使用的两种生命周期是:singleton和prototyp

Spring中bean的基本xml配置

xml   在spring容器内拼凑bean叫作装配.装配bean的时候,你是在告诉容器,需要哪些bean,以及容器如何使用依赖注入将它们配合在一起.    理论上,bean装配可以从任何资源获得,包括属性文件,关系数据库等,但xml是最常见的spring 应用系统配置源.Spring中的几种容器都支持使用xml装配bean,包括:    XmlBeanFactory ,    ClassPathXmlApplicationContext ,    FileSystemXmlApplicatio

Java类获取Spring中bean的5种方式_java

获取Spring中的bean有很多种方式,再次总结一下:第一种:在初始化时保存ApplicationContext对象 ApplicationContext ac = new FileSystemXmlApplicationContext("applicationContext.xml"); ac.getBean("beanId"); 说明:这种方式适用于采用Spring框架的独立应用程序,需要程序通过配置文件手工初始化Spring.第二种:通过Spring提供的工

Spring中XML配置的12个技巧

Spring利用依赖注入可以获得简单而有效的测试能力.Spring beans,依赖关系,以及服务所需要的bean都将在配置文件中予以描述,配置文件一般采用XML格式.然而XML配置文件冗长而不易使用,在你进行一个使用了大量bean的大项目中它将变得难以阅读和控制. 在这篇文章中我将给你展示12种的有关Spring XML配置文件的最佳技巧.请注意另外一些因素,例如域模型的设计,会影响到XML配置,但是这篇文章更关注于XML配置的可读性和可操控性. 1.避免使用自动装配 Spring可以通过be

Spring中如何配置DataSource数据源

在Spring框架中有如下3种获得DataSource对象的方法: 1.从JNDI获得DataSource. 2.从第三方的连接池获得DataSource. 3.使用DriverManagerDataSource获得DataSource. 一.从JNDI获得DataSource SpringJNDI数据源配置信息: <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean&qu