共计 911 个字符,预计需要花费 3 分钟才能阅读完成。
IOC根底
- Inversion of controller 管制反转, 领有对象创立的控制权与对象生命周期的管理权.
BeanFactory与 ApplicationContext 区别
- BeanFactory 容器是顶层接口, 定义一些根底性能与根底标准, 而 ApplicationContext 容器是高级接口也是 BeanFactory 的子接口.
- ApplicationContext 领有更多的性能, 国际化、资源文件读取、类列表展现
Bean的作用范畴与生命周期
- 作用范畴与生命周期的关系, 作用范畴决定了他的生命周期
作用范畴
- singleton、property、request、session、application、websocket
- singleton(单例模式)与 property(多例模式)应用较多; singleton 生命周期为程序启动时到完结、property 生命周期为当其应用时创立新对象.
高级个性
提早加载
- ApplicationContext 在实例化的时候也会将 singleton objects 提前实例化. 提前实例化意味着作为初始化的一部分. 如果不想让某一 singleton object 提前被实例化, 能够标识为懒加载(lazy)
- 开启提早加载肯定水平进步容器启动和运行性能
- 对于不常应用的 Bean 设置提早加载,这样偶然应用的时候再加载,不必要从一开始该 Bean 就占 用资源
FactoryBean与BeanFactory
- FactoryBean 生成某种类的工具类. 而 BeanFactory 是容器的顶级接口
- spring 中存在两种 Bean, 一般 Bean 与 FactoryBean
- FactoryBean 能够生成某一个类型的 Bean 实例(返回给咱们)
后置解决
- 两种后置解决 Bean 的接口, BeanFactoryPostProcessor 和 BeanPostProcessor
循环依赖
- 循环援用, 也就是两个或两个以上的 Bean 相互持有对方, 最终造成闭环.
- 结构器依赖与属性依赖; 结构器依赖是无奈解决的, 只能抛出 beanCurrentlyCreationException 异样, 在解决这个循环依赖的问题时, spring 采纳的是提前裸露对象的办法. 通过三级缓存的形式.
正文完