第4讲_了解BeanFactory

为什么说我们这篇文章只是说了解一下BeanFactory。因为BeanFactory内在的机制与代码实现实在是太强大了,在这一点我确实不敢滥竽充数。

  1. 那么我们又如何去了解BeanFactory,大家可以从它所具备的功能和作用去了解。
  • 我们都知道Spring框架有一个明显的作用就是它的IoC容器,所谓的IoC容器就是帮我们自动new对象,对象的生命周期交给Spring管管理
  • 而在Spring官方文档中谈到的Bean,其实就是我们说的由Spring IoC容器new出来的对象。这一点我个人认
    为大家可以注意一下
  • 在Spring框架中真正的能够new一个对象,能够提供对象之间的依赖关系。其幕后使者就是BeanFactory
  1. BeanFactory只是一个接口,那么要初始化BeanFactory则需要它的子类。例如下面的代码

     BeanFactory beanFactory = new ClassPathXmlApplicationContext("spring.xml");
    

但是通过上面的代码我们好像又看到BeanFactory的另一个作用,可能这个作用能够代表Spring框架启动的流程

  • 首先是读取Spring的xml配置文件,然后解析xml文件中的各种bean的定义,将xml文件中的每一个<bean />元素分别转换成一个BeanDefinition对象,其中保存了从配置文件中读取到的该bean的各种信息
  • 然后通过BeanDefinitionRegistry将这些bean注册到beanFactory中
  • 最后实例化阶段主要是通过反射或者CGLIB对bean进行实例化
  1. 了解BeanFactory中的getBean方法

     getBean(String name): 获取对象,但是需要类型转换
     getBean(String name, Class<T>clazz):获取对象,无需类型转换
    

需要注意的地方

  • 如果使用getBean(String name, Class<T>clazz)方法一定要关注Spring框架版本,在spring.4.x版本中提 供了getBean对泛型的支持
  • 如果使用spring.4.x版本,需要包含下面的jar包(spring-core.jar, spring-beans.jar, spring-context.jar, spring-expression.jar, common-logging.jar)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,997评论 19 139
  • 文章作者:Tyan博客:noahsnail.com 3.4 Dependencies A typical ente...
    SnailTyan阅读 4,220评论 2 7
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,974评论 6 342
  • 从朋友那里听来的心灵阐述:乖孩子吃不到糖 小的时候自己就很乖,懂得如何“讨好”大人们。懂得作为年长的哥哥姐姐,要礼...
    传奇小黑猫阅读 953评论 0 6
  • 刚认识你的时候,觉得你是那种特别老实,特别正经的人,慢慢聊天才发现,你也是特别善聊的不像我,很怕尴尬… ...
    稀惜溪惜曦阅读 195评论 0 0