0
点赞
收藏
分享

微信扫一扫

Spring IOC架构设计解析

7dcac6528821 2024-06-28 阅读 21

一、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扩展点总结

 

举报

相关推荐

0 条评论