Spring-IOC-2

IOC基础

  • Inversion of controller 控制反转, 拥有对象创建的控制权与对象生命周期的管理权.

BeanFactoryApplicationContext区别

  • BeanFactory容器是顶层接口,定义一些基础功能与基础规范, 而ApplicationContext 容器是高级接口也是BeanFactory的子接口.
  • ApplicationContext拥有更多的功能, 国际化、资源文件读取、类列表展示

Spring-IOC-2_第1张图片

Bean的作用范围与生命周期

  • 作用范围与生命周期的关系, 作用范围决定了他的生命周期

作用范围

  • singleton、property、request、session、application、websocket
  • singleton(单例模式)与property(多例模式)使用较多; singleton生命周期为程序启动时到结束、property生命周期为当其使用时创建新对象.

Spring-IOC-2_第2张图片

高级特性

延迟加载

  • ApplicationContext在实例化的时候也会将singleton objects 提前实例化. 提前实例化意味着作为初始化的一部分. 如果不想让某一singleton object 提前被实例化, 可以标识为懒加载(lazy)
  • 开启延迟加载一定程度提高容器启动和运转性能 
  • 对于不常使用的 Bean 设置延迟加载,这样偶尔使用的时候再加载,不必要从一开始该 Bean 就占 用资源

FactoryBeanBeanFactory

  • FactoryBean生成某种类的工具类. 而BeanFactory是容器的顶级接口
  • spring中存在两种Bean, 普通Bean与FactoryBean
  • FactoryBean可以生成某一个类型的Bean实例(返回给我们) 

后置处理

  • 两种后置处理Bean的接口, BeanFactoryPostProcessor和BeanPostProcessor

循环依赖

  • 循环引用, 也就是两个或两个以上的Bean互相持有对方, 最终形成闭环.
  • 构造器依赖与属性依赖; 构造器依赖是无法解决的, 只能抛出beanCurrentlyCreationException异常, 在解决这个循环依赖的问题时, spring采用的是提前暴露对象的方法. 通过三级缓存的方式. 

Spring-IOC-2_第3张图片

你可能感兴趣的:(Spring-IOC-2)