BeanDefinition是一个接口,在Spring中存在三种实现:RootBeanDefinition、ChildBeanDefinition以及GenericBeanDefinition。三种实现均继承了AbstractBeanDefinition。
BeanDefinition是配置文件中<bean>元素标签在容器中的内部表现形式。<bean>元素提供了相应的class、scope、lazy-ini等配置属性,BeanDefinition则提供了相应的beanClass、scope、lazyInit属性,BeanDefinition和<bean>中的属性是一一对应的。
Spring通过BeanDefinition将配置文件中的<bean>配置信息转换为容器的内部表示,并将BeanDefinition注册到BeanDefinitionRegistry中,Spring容器的BeanDefinitionRegistry就像是Spring配置信息的内存数据库,主要是以map的形式保存,后续操作直接从BeanDefinitionRegistry中读取配置信息。
如果大家有想读Spring源码的话,推荐《Spring源码深度解析》这本书
BeanDefinition与BeanDefinitionRegitry——读spring源码的记录
最新推荐文章于 2024-04-30 18:37:09 发布