JAVA-BeanDefinition是什么?是干什么的?在哪里?里面有什么?

目录

前言

抛砖引玉

单词含义

BeanDefinition是什么?

BeanDefinition在哪个包里面?

BeanDefinition里面有哪些属性?

BeanDefinition是如何存放的?

BeanDefinition被读取的常见读取器

如果本篇博客对您有一定的帮助,大家记得留言+点赞+收藏哦。


前言

在spring 中,bean要注入到IOC容器里,每个bean对象都通过BeanDefinition进行定义的。此博客带您了解BeanDefinition。

抛砖引玉

单词含义

BeanDefinition:

Bean的释义;解释;定义;

BeanDefinition是什么?

描述一个bean的全部信息,比如他的class类型、Bean的作用域、是否懒加载…

BeanDefinition在哪个包里面?

在spring-beans\org\springframework\beans\factory\config包下

JAVA-BeanDefinition是什么?是干什么的?在哪里?里面有什么?_第1张图片

如果您想要下载spring源码进行研究Spring的可以看博主的另一篇博客:

BeanDefinition里面有哪些属性?

BeanClass:表示一个bean的类型,Spring在创建Bean的过程中会根据此属性来实例化得到对象。

scope:表示一个bean的作用域,比如:scope为singleton,则此bean就是一个单例Bean; scope为prototype,则此bean就是一个原型Bean。

isLazy:表示一个bean是不是需要懒加载,原型bean的isLazy属性不起作用,懒加载的单例bean,会在第一次getBean的时候生成该bean,非懒加载的单例bean,则会在Spring启动过程中直接生成好。

dependsOn:表示一个bean在创建之前所依赖的其他bean,在一个bean创建之前,它所依赖的这些bean得先全部创建好。

primary:表示一个bean是主要的bean,在Spring中一个类型可以有多个bean对象,在进行依赖注入时,如果根据类型找到了多个bean,这时会判断这些bean中是否存在一个主bean,如果存在,则直接将这个bean注入给属性。

factoryMethodName:表示指定工厂方法,将在指定的工厂bean上调用或者作为本地bean类上的静态方法调用

initMethodName:表示一个bean的初始化方法,一个bean的生命周期过程中有一个步骤叫初始化,Spring会在这个步骤中去调用bean的初始化方法,初始化逻辑由程序员自己控制,表示程序员可以自定义逻辑对bean进行加工

BeanDefinition是如何存放的?

Map beanDefinitionMap = new ConcurrentHashMap<>(256)

JAVA-BeanDefinition是什么?是干什么的?在哪里?里面有什么?_第2张图片

当Bean注册完成后,会在spring容器中把扫描到的beanDefinition存放到beanDefinitionMap中,方便后续的使用。

BeanDefinition被读取的常见读取器

  • AnnotatedBeanDefinitionReader:解析类上的注解,包含某些注解的时候会成为Bean。

  • XmlBeanDefinitionReader:可以解析xml文件中的标签。

  • ClassPathBeanDefinitionScanner:扫描包路径的读取器。

如果本篇博客对您有一定的帮助,大家记得留言+点赞+收藏哦。

你可能感兴趣的:(#,Spring,【Java】,#,java相关,spring,java)