目录

前言

抛砖引玉

单词含义

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包下

如果您想要下载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<String, BeanDefinition> beanDefinitionMap = new ConcurrentHashMap<>(256)

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

BeanDefinition被读取的常见读取器

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

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

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

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

JAVA-BeanDefinition是什么?是干什么的?在哪里?里面有什么?相关推荐

  1. java中的console是干什么的_[Java教程]javascript中,你真的会用console吗?

    [Java教程]javascript中,你真的会用console吗? 0 2015-08-11 17:00:09 使用console进行性能测试和计算代码运行时间 对于前端开发人员,在开发过程中经常需 ...

  2. Java基础学习总结(95)——Java反射主要用来干什么?

    Java除了给我们提供在编译期得到类的各种信息之外,还通过反射让我们可以在运行期间得到类的各种信息.通过反射获取类的信息,得到类的信息之后,就可以获取以下相关内容: 首先放出一个Java类作为反射的研 ...

  3. 【java框架】Maven是干什么的?

    Maven:英文意思 专家 是在java项目中帮助管理项目中的jar包的(jar之间的依赖关系).完成项目编译.测试.打包.发布等工作. pom.xml: Maven根目录有一个pom.xml来指示M ...

  4. java到底能用来干什么?我来实事求是告诉你

    Java 是一种跨平台的.面向对象的高级编程语言,主要用来进行网站后台开发和 Android APP 开发. Java 是全球最受欢迎的编程语言之一,在世界编程语言排行榜 TIOBE 中,Java 一 ...

  5. java架构师主要是干什么的?

    java架构师需要做六个方面的工作. 1,需求整理分析 首先,第一手的信息损失最少,架构师能够更好的把握需求:其次,分析人员在与客户交流时,往往不会深入挖掘需求,因为有很多隐藏的需求客户自己都不见得意 ...

  6. JAVA学习——Lambda表达式是干什么用的?

    今天又一次接触到了Lambda表达式,之前的博客只知道其形不明白其意,这次终于了解比较深刻了.总而言之Lambda表达式就是用来简化代码的,是JDK8的新特性,不用Lambda表达式一样可以写,只是稍 ...

  7. Java是什么?主要是干什么的?

    随着Java技术不断发展,许多人都想问:Java是什么?主要是干什么的呀?现在小朗来为大家解惑.java是一种高级计算机语言,一种可以编写跨平台应用软件.完全面向对象的程序设计语言.那Java主要是干 ...

  8. java定时执行一次_java Timer(定时调用、实现固定时间执行)

    最近需要用到定时调用的功能.可以通过java的Timer类来进行定时调用,下面是有关Timer的一些相关知识. 其实就Timer来讲就是一个调度器,而TimerTask呢只是一个实现了run方法的一个 ...

  9. Java Timer、TimerTask

    下面内容转载自: http://blog.csdn.net/xieyuooo/article/details/8607220 其实就Timer来讲就是一个调度器,而TimerTask呢只是一个实现了r ...

  10. 关于Java,你想知道的一切,这里说透了

    关于学习java,小伙伴们总是有各种各样的问题,如果你也有意从事 Java 编程事业的话,可能就会比较关心实际的问题了.总结起来,无非就是以下几个,看看你有没有中招吧~ [请选择]下面这些问题,你都关 ...

最新文章

  1. 阿里员工绩效只拿3.25!自我反省:平时假装努力!晚上没加班!去厕所时间太长!还老买彩票!...
  2. YUM环境的三种搭建方法
  3. mysql web搜索系统_【20201011】做个搜索引擎(6)——网页蜘蛛代码编写(二)
  4. java array 元素的位置_数据结构与算法:动态图解十大经典排序算法(含JAVA代码实现)...
  5. batch lr替代关系_建立关系的替代方法
  6. (1)zynq FPGA简介
  7. STC学习:非易失存储器
  8. typedef struct LNode *p和typedef struct LNode笔记
  9. win7定时关机命令_IT技术分享06:如何让电脑在任何时间自动关机
  10. 图书馆管理系统测试计划说明书
  11. 5G系统——5G-GUTI、5G-TMSI、5G-S-TMSI
  12. Debian 7.4 下mentohust开机自动认证
  13. 苹果公司的企业文化_企业文化到底有什么用?
  14. STM32学习笔记(五 定时器及应用 3 PWM输出实验 )
  15. Oo0代码混淆实现方法
  16. 香港三电视台千人默哀 无线换节目亚视停广告
  17. google的GCM推送使用简介
  18. 基于openharmony的智慧婴儿陪睡伴侣
  19. 无法访问指定计算机,windows无法访问指定设备路径或文件是什么原因,怎么解决?...
  20. 关于抢红包的_关于抢红包作文

热门文章

  1. 3ds Max 2018--点击“输入序列号”框就闪退
  2. python爬取新浪微博内容_python新浪微博爬虫,爬取微博和用户信息 (含源码及示例)...
  3. Android使用XMPP框架实现即时聊天(IM)功能(Openfire + Smack)
  4. 商场/购物中心会员营销活动方案
  5. FPGA认识-LCMXO3LF-9400C-5BG400C 什么是低功耗FPGA
  6. oracle中中rowid,oracle中的Rowid和Urowid
  7. 冯诺依曼关于计算机的名言,冯诺依曼的名言
  8. 名悦集团:汽车二次保养什么时候做
  9. PMP的报名、考试流程
  10. 有哪些日语学习 App 值得推荐?3款App带你一星期入门、三个月就会说