拉勾网《32个Java面试必考点》学习笔记之八------必会框架1️⃣一Spring全家桶
本文为拉勾网《32个Java面试必考点》学习笔记.只是对视频内容进行简单整理,详细内容还请自行观看视频《32个Java面试必考点》.若本文侵犯了相关所有者的权益,请联系:[email protected]将会删除相关内容
必会框架1️⃣一Spring全家桶
知识点汇总
知识点详解
Spring
Spring中的基本概念
- IOC/DI
- 对象的属性由自己创建,为正向流程,而由Spring创建,为控制反转.
- DI(依赖注入)为实现IOC的一种方式,通过配置文件或注解包含的依赖关系创建与注入对象.
- 正向流程导致了对象与对象之间的高耦合,IOC可以解决对象耦合的问题,有利于功能的复用
例如,招聘中,公司按岗位要求安排人选为正向流程,反之,由第三方猎头匹配岗位和候选人,并向公司推荐,则为控制反转
-
Context&Bean
- 所有由Spring创建,管理,用于依赖注入的对象,称为Bean
- 所有Bean创建并完成依赖注入后,都会放入Context上下文中进行管理
-
AOP(Aspect Oriented Programming 面向切面编程)
- 以功能进行划分,对服务顺序执行流程中的位置进行横切,完成各服务共同需要实现的功能
Spring框架
重点了解一下几点
- Core
- Spring组件的核心
- Beans和Context
- 实现IOC/DI的基础
- Web
- 包括SpringMVC是Web服务的控制层实现
- AOP
- 面向切面编程
Spring机制与实现
Spring应用
Spring Context初始化流程
-
prepareRefresh();
对刷新进行准备,包括设置开始时间,设置**状态,初始化Context中的占位符,子类根据其需求执行具体准备工作,而后再由父类验证必要参数 -
obtianFreshBeanFactory();
,刷新并获取内部的BeanFactory对象 -
prepareBeanFactory(beanFactory);
,对BeanFactory进行准备工作,包括设置类加载器和后置处理器,配置不能自动装配的类型,注册默认的环境Bean -
postProcessBeanFactory(beanFactory);
为Context的子类提供后置处理BeanFactory的扩展能力,如想在bean定义加载完成后,开始初始化上下文之前进行逻辑操作,可重写这个方法 -
invokeBeanFactoryPostProcessors(beanFactory);
,执行Context中注册的BeanFactory后置处理器,有两张处理器,一种是可以注册Bean的后置处理器,一种的针对BeanFactory的后置处理器,执行顺序是先按优先级执行注册Bean的后置处理器,而后再按优先级执行针对BeanFactory的后置处理器SpringBoot中会进行注解Bean的解析,由ConfigurationClassPostProcessor触发,由ClassPathDefinitionScanner解析,并注册到BeanFactory
-
registerBeanFactoryProcessor(beanFactory();
,按优先级顺序在BeanFactory中注册Bean的后置处理器,Bean处理器可在Bean的初始化前后处理 -
initMessageSource();
初始化消息源,消息源用于支持消息的国际化 -
initApplicationEventMuticaster();
初始化应用事件广播器,用于向ApplicationListener通知各种应用产生的事件,标准的观察者模型 -
onRefresh();
,用于子类的扩展步骤,用于特定的Context子类初始化其他的Bean -
registerListeners();
,把实现了ApplicationListener的类注册到广播器,并对广播其中早期没有广播的事件进行通知 -
finishBeanFactoryInitialization(beanFactory);
,冻结所有Bean描述信息的修改,实例化非延迟加载的单例Bean -
finishRefresh();
,完成上下文的刷新工作,调用LifecycleProcessor.onRefresh(),以及发布
ContextRefreshedEvent事件 -
resetCommonCaches();
在finally中执行该步骤,重置公共的缓存,如ReflectionUtils中的缓存,
AnnotationUtils等
Spring中Bean的生命周期
Spring扩展接口
扩展接口 | 作用 |
---|---|
BeanFactoryPostProcessor | 处理Bean前,对BeanFactory进行预处理 |
BeanDefinitionRegistryPostProcessor | 可添加自定义的Bean |
BeanPostProcessor | 支持Bean初始化前后的处理 |
ApplicationContextAware | 可以获得ApplicationContext及其中的Bean |
InitializingBean | 在Bean创建完,所有属性注入后执行 |
DisposableBean | 在Bean销毁前执行 |
ApplicationListener | 用于监听产生的应用事件 |