Spring-IOC-2
IOC基础
- Inversion of controller 控制反转, 拥有对象创建的控制权与对象生命周期的管理权.
- BeanFactory容器是顶层接口,定义一些基础功能与基础规范, 而ApplicationContext 容器是高级接口也是BeanFactory的子接口.
- ApplicationContext拥有更多的功能, 国际化、资源文件读取、类列表展示
文章图片
Bean的作用范围与生命周期
- 作用范围与生命周期的关系, 作用范围决定了他的生命周期
- singleton、property、request、session、application、websocket
- singleton(单例模式)与property(多例模式)使用较多; singleton生命周期为程序启动时到结束、property生命周期为当其使用时创建新对象.
文章图片
高级特性
【Spring-IOC-2】延迟加载
- ApplicationContext在实例化的时候也会将singleton objects 提前实例化. 提前实例化意味着作为初始化的一部分. 如果不想让某一singleton object 提前被实例化, 可以标识为懒加载(lazy)
- 开启延迟加载一定程度提高容器启动和运转性能
- 对于不常使用的 Bean 设置延迟加载,这样偶尔使用的时候再加载,不必要从一开始该 Bean 就占 用资源
- FactoryBean生成某种类的工具类. 而BeanFactory是容器的顶级接口
- spring中存在两种Bean, 普通Bean与FactoryBean
- FactoryBean可以生成某一个类型的Bean实例(返回给我们)
- 两种后置处理Bean的接口, BeanFactoryPostProcessor和BeanPostProcessor
- 循环引用, 也就是两个或两个以上的Bean互相持有对方, 最终形成闭环.
- 构造器依赖与属性依赖; 构造器依赖是无法解决的, 只能抛出beanCurrentlyCreationException异常, 在解决这个循环依赖的问题时, spring采用的是提前暴露对象的方法. 通过三级缓存的方式.
文章图片
推荐阅读
- Python基础|Python基础 - 练习1
- Java|Java基础——数组
- Java基础-高级特性-枚举实现状态机
- 营养基础学20180331(课间随笔)??
- iOS面试题--基础
- HTML基础--基本概念--跟着李南江学编程
- typeScript入门基础介绍
- c++基础概念笔记
- 集体释放
- 自我修养--基础知识