BeanDefinition的一些信息

来源:6-2 Bean与BeanDefinition

CoffeePlayer

2020-12-23

老师,您好。我对BeanDefinition的一些理解如下,请看一下我的理解对不对,不对的话请帮我纠正。谢谢!

有如下类

	class Parent {}
	class Child extends Parent{}

配置文件中配置如下

	<bean id="parent" class="xxx.Parent" />
	<bean id="child" class="xxx.Child" parent="parent"/>
  1. 如上两个bean是有继承关系的,在spring2.5之后, 我的理解是,当容器启动后,spring会创建一个parent bean的GenericBeanDefinition, 也会创建一个child bean 的GenericBeanDefinition, 并且会将child bean的GenericBeanDefinition中的parent属性设置为parent。 在spring2.5之前,我的理解是没有继承关系的bean会创建一个RootBeanDefinition描述该bean。有继承关系的bean,比如上面,parent bean 会创建一个RootBeanDefinition描述该bean,child bean会创建一个ChildBeanDefinition描述该bean,并且将ChildBeanDefinition中的parentName属性设置为parent。

  2. 通常用来在运行时接收多个BeanDefinition合并起来的信息,RootBeanDefinition能接收具有继承关系的两个BeanDefinition。承接两者合并在一起的除了parent属性以外的属性。 spring是如何将具有继承关系的两个BeanDefinition合并起来的? 能举个例子吗?

老师,网上有没有比较好的这一块的博客,奈何我的知识有限,并不能分辨一些错误的博客,
如果有写的靠谱的博客,请老师推荐一下。万分感激!!

写回答

1回答

翔仔

2020-12-24

同学好,配置里的parent关系和类的实际继承关系没有什么必然的联系哈,配置里面的parent只是说的是有一套公用的属性,不想多写,就可以统一提取到parent的bean里面,供child复用

使用上面的资料

https://www.cnblogs.com/huang0925/p/3644096.html

然后合并起来实际就是把属性存到一个公共的地方公用

0
2
翔仔
回复
CoffeePlayer
同学好,课程说的beandefinition的继承关系是在源码级别上的吧,可以看看这篇 https://cloud.tencent.com/developer/article/1497805
2020-12-24
共2条回复

剑指Java自研框架,决胜Spring源码

快速入门Spring核心源码+从零开发自研框架

1498 学习 · 495 问题

查看课程