Spring IOC

Spring IOC

IOC


IOC我的理解就是一种Bean的全面托管。容器将创建Bean,识别属性,把它们连接在一起,并管理他们的整个生命周期从创建到销毁。

IOC中用于识别、配置、实例化、保存、销毁的使用的就是ApplicationContext。

ApplicationContext

image_1bbgj44471sf711rhmor1b6s1jg59.png-61.3kB
image_1bbgj44471sf711rhmor1b6s1jg59.png-61.3kB

ApplicationContext充当整个容器的上下文。

那这个上下文需要什么功能?

  • Bean的创建和维护
  • 资源的识别
  • 事件的注册和触发

Bean的创建和维护

BeanFactory这个接口用来Bean的创建和维护。这个Bean工厂是一个通用工厂,需要能够构建各种Bean,这里的Bean是指能够被Spring管理的Bean,Spring中可以指定init方法,也就是说并不限制要求实现空参构造函数。

DefaultListableBeanFactory是他的默认的实现类。填充在ApplicationContext接口的Abstract实现中

image_1bbgkqnvtm6j3kmo731vfq1nk013.png-138.3kB
image_1bbgkqnvtm6j3kmo731vfq1nk013.png-138.3kB

ListableBeanFactory接口定义诸如查找Bean、判断Bean存在性的基本方法

image_1bbglhkio6m61lb4lm31l3u83gm.png-90.9kB
image_1bbglhkio6m61lb4lm31l3u83gm.png-90.9kB

HierarchicalBeanFactory接口能拿父类的工厂,实际上相当于允许子类操作父类的Bean工厂

image_1bbglgl641p2vug41h4b1ndp4cg9.png-119.6kB
image_1bbglgl641p2vug41h4b1ndp4cg9.png-119.6kB

ConfigurableBeanFactory接口提供Bean的定制,诸如是Bean是singleton还是prototype,他的类型是啥,有啥注解标识

image_1bbglrmmq13de133ufsc1f6f1j3c13.png-87kB
image_1bbglrmmq13de133ufsc1f6f1j3c13.png-87kB

BeanDefinitionRegistry接口允许Bean定义,注册、删除等流程

image_1bbglv5hn1gi76mqmov1a5k56n1g.png-72.8kB
image_1bbglv5hn1gi76mqmov1a5k56n1g.png-72.8kB

资源的识别,事件的注册和触发


  • 触发相应消息


    image_1bbgmbf7al4d1rd91cidcn51sv11t.png-74.2kB
    image_1bbgmbf7al4d1rd91cidcn51sv11t.png-74.2kB
  • 识别流资源


    image_1bbgmebtu1n7g8f1ipqtd317302a.png-174.1kB
    image_1bbgmebtu1n7g8f1ipqtd317302a.png-174.1kB
  • 本地化资源


    image_1bbgmgrma10bqrec6a7p5nlsl2n.png-269.8kB
    image_1bbgmgrma10bqrec6a7p5nlsl2n.png-269.8kB

补充


ApplicationContext的抽象实现AbstractApplicationContext中使用ApplicationEventMulticaster充当事件发布的角色。

参见上篇 -> Spring中的事件机制

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容