• Spring IOC架构设计解析


    一、spring famework 模块解析

    二、SpringIOC容器:Core Container: Beans、Core、Context、Expression

    三、BeanFactory (该接口定义了容器最基本的功能方法)和 ApplicationContext(对容器提供了更丰富的功能扩展,大部分应用中所使用的基于它实现)

    1、BeanFactory

    (1)BeanFactory是Spring对IOC容器的最高层抽象

    (2)BeanFactory提供各种获取Bean的方法

    (3)默认实现:DefaultListableBeanFactory

    2、ApplicationContext接口

    (1)继承了BeanFactory接口的所有方法

    (2)功能更加齐全,支持后处理与事件机制

    (3)常用实现:AnnotationConfigApplicationContext

    AbstractApplicationContext类承担了主要内容。

    3、BeanFactory(bean的注册和获取)和ApplicationContext(更完备的功能)的区别

    Feature

    BeanFactory

    ApplicationContext

    构建实例化Bean容器/读取bean

    Y

    Y

    生命周期的管理

    N

    Y

    BeanPostProcessor自动注册

    N

    Y

    BeanFactoryPostProcessor自动注册

    N

    Y

    MessageSource支持

    N

    Y

    ApplicantionEvent 事件发布

    N

    Y

    四、如何定义Bean实例的方法

    1、基于xml定义Bean

    2、基于注解定义Bean

    3、基于Java类,@Configuration定义Bean

    五、容器扩展点BeanPostProcessor 和 BeanFactoryPostProcessor(可以通过扩展点实现通用业务逻辑)

    1、BeanPostProcessor:在容器初始化Bean的过程中提供干预的扩展

    (1)postProcessBeforeInitialization

    (2)postProcessAfterInitialization

    2、BeanFactoryPostProcessor: 主要用于修改Bean的定义,方法postProcessBeanFactory,晚于BeanDefinitionRegistryPostProcessor执行,每个Bean都要执行一次

    3、BeanDefinitionRegistryPostProcessor ,Bean定义注册以后,执行该接口的方法,只执行一次

    六、Bean的生命周期Callbacks(对Bean生命周期回调扩展点是否清晰)

    1、Spring接口扩展InitializingBean,DisposableBean(销毁Bean),缺点是有入侵,需要引入对应的api

    2、基于JSR-250注解@PostConstruct,@PreDestroy(销毁Bean之前),优点是没有入侵,引用自javax.annotation.* 包下的

    3、基于Spring xml配置init, destroy方法

    4、初始化和销毁的优先级:2 > 1 > 3

    七、BeanPostProcessor扩展点总结

     

  • 相关阅读:
    【编解码格式】Dirac、VC-2、VC-1、WMV3(WMV9)
    域名 DNS 信息查询 API 数据接口
    2023年中国视频流媒体行业发展历程及趋势分析:未来市场规模趋于平稳[图]
    迅为RK3568开发板Android12 系统功能测试-有线网测试
    Vatee万腾外汇市场新力量:vatee科技决策力
    计算机毕业设计Python+Django的大学生提问论坛系统
    一文详解Gorm
    卡尔曼家族从零解剖-(01)预备知识点
    redis 缓存雪崩 && 缓存击穿 && 缓存穿透
    Go学习圣经:队列削峰+批量写入 超高并发原理和实操
  • 原文地址:https://blog.csdn.net/alan_gaohaodong/article/details/139920481