- 浏览: 967627 次
- 性别:
- 来自: 江西上饶
-
文章分类
- 全部博客 (460)
- p.spring (56)
- p.maven (20)
- p.ant (17)
- p.jee (18)
- p.jse (33)
- p.ofbiz (31)
- p.软件工程 (8)
- p.struts2 (5)
- p.hibernate (5)
- linux (25)
- 设计模式 (2)
- p.javascript (11)
- 硬件 (1)
- p.jsp (2)
- p.windows批处理 (1)
- 操作系统问题 (5)
- 算法 (1)
- p.mysql (7)
- p.sql (5)
- p.c (1)
- google产品 (0)
- 内存 (1)
- p.struts (1)
- p.freemarker (7)
- p.css (4)
- p.log4j (10)
- p.html (3)
- 淘宝产品 (0)
- 其他 (3)
- 编译器 (0)
- svn (4)
- p.spring.security (11)
- 图形 (0)
- p.xml (1)
- p.ssh (0)
- p.jquery (4)
- p.jdbc (3)
- p.flex (0)
- p.c++ (0)
- p.c#Net (0)
- p.assembly (0)
- p.sqlserver (0)
- p.其他 (3)
- p.webwork (21)
- p.wap (12)
- p.cglib (1)
- p.jee服务器 (11)
- windows (2)
- p.iphone (1)
- p.java.分布式与集群 (2)
- p.ibatis (16)
- p.eclipse (5)
- 架构 (2)
- http协议 (5)
- 我的个人标准 (2)
- 多线程 (1)
- 奇怪问题 (5)
- p.jira (13)
- p.httpclient (1)
- 服务器.apache (11)
- 安全防范 (1)
- p.PODAM (1)
- p.junit (16)
- fop (2)
- 硬盘安装 (1)
- powerdesigner (0)
- 单元测试 (1)
- apache commons (4)
- tomcat+apache集群 (10)
- 各类诡辩 (1)
- 安卓 (8)
- qvod (1)
- java编程基础知识考试考点及答案 (0)
- 工作总结 (4)
- oracle (0)
- spring的util工具 (3)
- json (2)
- maven (3)
- jms (19)
- p.bat (3)
- hadoop (2)
- git (3)
- nginx (1)
- p.移动开发 (1)
- shiro (3)
- 游戏破解 (1)
- react-native (7)
- ios开发 (1)
- webmagic (6)
- socks5 (1)
最新评论
-
weituotian:
说的不好,没人看的
公司系统中的菜单功能和权限功能 -
石不易:
非常详细的注解~
绑定端口和IP,Listen 与VirtualHost指令 -
spring_springmvc:
spring mvc demo教程源代码下载,地址:http: ...
spring mvc -
liyixing1:
PandaDONG 写道谢谢你啊,我已经下下来了,只是还有很多 ...
jira war安装 -
liyixing1:
PandaDONG 写道谢谢你啊,我已经下下来了,只是还有很多 ...
jira war安装
bean定义中包含了大量的配置信息,其中包括容器相关的信息(比如初始化方法、静态工厂方法名等等)以及构造器参数和属性值。子bean定义就是从父bean定义继承配置数据的bean定义。它可以覆盖父bean的一些值,或者添加一些它需要的值。使用父/子bean定义的形式可以节省很多的输入工作。实际上,这就是一种模板形式。
当以编程的方式使用BeanFactory时,子bean定义用ChildBeanDefinition类表示。大多数用户从来不需要以这个方式使用它们,而是以类似XmlBeanFactory中的声明方式去配置bean定义。当使用基于XML的配置元数据时,给'parent'属性指定值,意味着子bean定义的声明。
<bean id="inheritedTestBean" abstract="true"
class="org.springframework.beans.TestBean">
<property name="name" value="parent"/>
<property name="age" value="1"/>
</bean>
<bean id="inheritsWithDifferentClass"
class="org.springframework.beans.DerivedTestBean"
parent="inheritedTestBean" init-method="initialize">
<property name="name" value="override"/>
<!-- the age property value of 1 will be inherited from parent -->
</bean>
如果子bean定义没有指定class属性,它将使用父bean定义的class属性,当然也可以覆盖它。在后面一种情况中,子bean的class属性值必须同父bean兼容,也就是说它必须接受父bean的属性值。
一个子bean定义可以从父bean继承构造器参数值、属性值以及覆盖父bean的方法,并且可以有选择地增加新的值。如果指定了init-method,destroy-method和/或静态factory-method,它们就会覆盖父bean相应的设置。
剩余的设置将总是从子bean定义处得到:依赖、自动装配模式、依赖检查、singleton、作用域和延迟初始化。
注意在上面的例子中,我们使用abstract属性显式地将父bean定义标记为抽象的。下面是个父bean定义并没有指定class属性的例子,其中父bean必须显式地标上abstract:
<bean id="inheritedTestBeanWithoutClass" abstract="true">
<property name="name" value="parent"/>
<property name="age" value="1"/>
</bean>
<bean id="inheritsWithClass" class="org.springframework.beans.DerivedTestBean"
parent="inheritedTestBeanWithoutClass" init-method="initialize">
<property name="name" value="override"/>
<!-- age will inherit the value of 1 from the parent bean definition-->
</bean>
由于这样的父bean是不完整的,而且还被显式标记为抽象的,因而它无法得到自己的实例。抽象bean定义可作为子bean定义的模板。若要尝试单独使用这样的父bean(比如将它作为其他bean的ref属性而引用,或者直接使用这个父bean的id作为参数调用getBean()方法),将会导致错误。同样地,容器内部的preInstantiateSingletons()方法会完全忽略abstract的bean定义。
Note
默认情况下,ApplicationContext(不是BeanFactory)会预实例化所有singleton的bean。因此很重要的一点是:如果你只想把一个(父)bean定义当作模板使用,而它又指定了class属性,那么你就得将'abstract'属性设置为'true',否则应用上下文将会(试着)预实例化抽象bean。
当以编程的方式使用BeanFactory时,子bean定义用ChildBeanDefinition类表示。大多数用户从来不需要以这个方式使用它们,而是以类似XmlBeanFactory中的声明方式去配置bean定义。当使用基于XML的配置元数据时,给'parent'属性指定值,意味着子bean定义的声明。
<bean id="inheritedTestBean" abstract="true"
class="org.springframework.beans.TestBean">
<property name="name" value="parent"/>
<property name="age" value="1"/>
</bean>
<bean id="inheritsWithDifferentClass"
class="org.springframework.beans.DerivedTestBean"
parent="inheritedTestBean" init-method="initialize">
<property name="name" value="override"/>
<!-- the age property value of 1 will be inherited from parent -->
</bean>
如果子bean定义没有指定class属性,它将使用父bean定义的class属性,当然也可以覆盖它。在后面一种情况中,子bean的class属性值必须同父bean兼容,也就是说它必须接受父bean的属性值。
一个子bean定义可以从父bean继承构造器参数值、属性值以及覆盖父bean的方法,并且可以有选择地增加新的值。如果指定了init-method,destroy-method和/或静态factory-method,它们就会覆盖父bean相应的设置。
剩余的设置将总是从子bean定义处得到:依赖、自动装配模式、依赖检查、singleton、作用域和延迟初始化。
注意在上面的例子中,我们使用abstract属性显式地将父bean定义标记为抽象的。下面是个父bean定义并没有指定class属性的例子,其中父bean必须显式地标上abstract:
<bean id="inheritedTestBeanWithoutClass" abstract="true">
<property name="name" value="parent"/>
<property name="age" value="1"/>
</bean>
<bean id="inheritsWithClass" class="org.springframework.beans.DerivedTestBean"
parent="inheritedTestBeanWithoutClass" init-method="initialize">
<property name="name" value="override"/>
<!-- age will inherit the value of 1 from the parent bean definition-->
</bean>
由于这样的父bean是不完整的,而且还被显式标记为抽象的,因而它无法得到自己的实例。抽象bean定义可作为子bean定义的模板。若要尝试单独使用这样的父bean(比如将它作为其他bean的ref属性而引用,或者直接使用这个父bean的id作为参数调用getBean()方法),将会导致错误。同样地,容器内部的preInstantiateSingletons()方法会完全忽略abstract的bean定义。
Note
默认情况下,ApplicationContext(不是BeanFactory)会预实例化所有singleton的bean。因此很重要的一点是:如果你只想把一个(父)bean定义当作模板使用,而它又指定了class属性,那么你就得将'abstract'属性设置为'true',否则应用上下文将会(试着)预实例化抽象bean。
发表评论
-
Spring 定时任务,cron表达式,@Scheduled cron表达式
2016-04-25 15:48 5314一个cron表达式有至少6 ... -
spring mvc list
2015-12-14 10:28 1300我使用这样无法传入 @requestMapping(" ... -
Unable to locate Spring NamespaceHandler for XML schema namespace
2015-09-23 14:00 2340org.springframework.beans.facto ... -
关于使用s.url jstl的上下文
2015-08-16 13:28 934比如 [@s.url '/'/]index.html?cote ... -
Spring 属性占位符配置器 PropertyPlaceholderConfigurer
2015-08-02 12:43 2098<!-- 属性配置文件读 ... -
FactoryBean接口
2014-09-30 14:05 917实现了FactoryBean接口的bean不是简单的一个bea ... -
国际化之MessageSourceAware和MessageSourceAccessor
2014-01-06 23:13 2870先看接口MessageSourceAware 该接口的注释中 ... -
spring 惯例优先原则
2013-07-22 09:46 1227惯例优先原则(convention over configur ... -
ant path匹配
2013-07-22 09:40 2187spring和ant path实现相关的主要类有两个 org. ... -
springmvc action方法中参数具有@ModelAttribute与不具有的区别
2012-12-14 09:36 4136在springmvc的参数解析中,发现具有@ModelAttr ... -
util包
2012-12-05 13:50 1124spring的util基本上都在springframework ... -
url,请求相关帮助类UrlPathHelper
2012-11-29 11:18 2541org.springframework.web.util.Ur ... -
整站国际化方案
2012-11-28 17:46 1122当前常见的实现方式,主要由两种方案实现 1.通过locale ... -
spring的三种注入方式
2012-11-20 17:30 18811.通过bean的property子元 ... -
spring AnnotationUtils 注解工具
2011-12-08 11:27 1317spring AnnotationUtils 注解工具 -
GenericCollectionTypeResolver,用于获取list或者map等元素的类型
2011-12-07 16:17 1324GenericCollectionTypeResolver,用 ... -
属性编辑器
2011-12-05 18:19 1094我自定义了一个类型,然后设置了一个属性编辑器,注册的class ... -
iframe下面的session问题
2011-12-04 19:52 5347在写iframe完成长连接获取上传状态的时候,有两次请求,一次 ... -
mvc之类的驱动原理
2011-12-01 09:34 1114<mvc:annotation-driven /> ... -
Couldn't access current invocation
2011-10-20 20:44 1913做了一个aop的日志记录器,但是在运行的时候出现了日志信息 服 ...
相关推荐
实体Bean继承是Java企业级应用开发中的一个重要概念,特别是在使用Java持久化技术(JPA)进行数据存储时。实体Bean代表数据库中的一个表,而实体Bean之间的继承关系则需要在数据库层面进行适当的映射,以便正确地...
2. **修改Bean定义**:如果需要修改已存在的bean定义,如属性值、依赖关系等,可以在`BeanPostProcessor` 的实现中检查bean定义并进行调整。这通常需要通过`BeanDefinitionRegistry` 获取bean定义,并利用`Bean...
Spring允许bean定义的继承,这意味着可以创建一个父bean定义,然后由其他bean定义继承它。这样可以减少重复配置,保持XML文件整洁。通过`parent`属性指定父bean,子bean只需覆盖需要改变的部分。 6. 使用内部bean...
本文档详细介绍了 Spring 5.0.2 中的核心技术,涵盖了 IoC 容器、Bean 的概述、依赖关系、范围、定制 Bean 的本质、Bean 定义继承、容器扩展点、基于注解的容器配置、类路径扫描和管理组件、使用 JSR 330 标准注释、...
在Spring中,一个bean可以基于另一个bean定义,这意味着它将继承父bean的所有属性和配置,包括默认的初始化方法、销毁方法、属性值等。这样,我们可以在父bean中定义通用的配置,而在子bean中只定义特有的部分,避免...
- **Bean定义继承**:Bean可以继承另一个Bean的定义,从而重用属性和配置信息。这种机制可以减少重复配置,并使配置更加灵活。 以上是对Spring Core官方文档的部分内容进行的详细总结,涵盖了Spring框架中IoC容器的...
当我们说“Bean的继承配置”时,实际上是指一个Bean定义可以继承另一个Bean定义的部分或全部属性。 在XML配置中,我们可以使用`<bean>`标签的`parent`属性来指定父Bean。例如: ```xml <bean id="parentBean" ...
#### Spring Bean 定义继承 Bean 定义也可以支持继承,子 bean 可以继承父 bean 的属性。 - **示例**:创建两个 bean 定义,其中一个继承另一个,并覆盖某些属性。 #### Spring 依赖注入 Spring 支持多种依赖...
Bean的继承是通过`parent`属性实现的,允许一个Bean继承另一个Bean的配置。这样可以重用和覆盖父Bean的属性值。比如: ```xml <bean id="address2" class=...
实体Bean的继承可以通过`@Inheritance`注解来实现,它定义了如何处理子类和父类之间的关系。在这个例子中,我们有一个`Person`实体Bean,它有`name`和`gender`两个属性。然后,我们有两个子类`Man`和`Woman`,它们都...
#### 六、Bean定义继承 通过继承Bean定义,可以复用现有的Bean配置,减少冗余代码。这种方式在配置复杂的应用时非常有用。 总结起来,Spring IoC容器提供了一套完整的机制来管理应用中的对象及其依赖关系。通过对...
1.7 Bean定义继承 Bean定义可以继承自父定义,使得子定义可以继承父定义的配置属性。 1.8 容器扩展点 Spring框架允许开发者扩展容器行为,这包括自定义BeanPostProcessor、BeanFactoryPostProcessor等。 在Spring...
- **Bean定义继承**:Bean定义可以继承其他Bean定义的属性,这样可以在不重复定义相同属性的情况下创建新Bean定义。 - **构造函数参数匹配**:Spring允许通过不同方式进行构造函数参数的匹配,包括基于类型或基于...
Bean的继承是指在Spring容器中,一个子Bean定义可以从一个父Bean定义中继承配置信息。这并不意味着Java类的继承关系,而是针对配置元数据的一种抽象。通过继承,子Bean可以在保留父Bean某些配置的同时,对某些属性...
Bean定义继承允许一个bean定义可以继承另一个bean定义的配置,通过parent属性指定。这种方式对于管理具有共同配置的多个bean非常有用。 容器扩展点提供了自定义容器行为的能力,通过实现特定的接口或继承特定的类...
- **Bean 定义继承**:允许子 Bean 继承父 Bean 的属性,简化了配置。 - **环境抽象**:允许应用程序根据运行时环境的不同而加载不同的配置。 **2. 资源处理** - **Resource 接口**:定义了如何访问资源的标准...
Spring Framework 4.x中对IoC容器进行了改进,包括对bean定义继承、容器扩展点和类路径扫描的增强。这些改进使得Spring IoC容器更加灵活,能够更好地与现代Java应用集成。 资源(Resources)处理是Spring框架中的一...
- **bean定义继承**:允许子bean继承父bean的属性,可以减少重复的配置。 - `abstract`属性:用于标记一个bean是否为抽象bean,抽象bean不能被实例化,主要用于被其他bean继承。 - **自动装配**:Spring可以根据...
- **3.1.7 Bean 定义继承**: Bean 定义支持继承,可以方便地复用配置。 - **3.1.8 容器扩展点**: 提供了对 IoC 容器进行扩展的方法。 - **3.1.9 类路径扫描与托管组件**: 介绍了如何使用类路径扫描来自动发现和配置...