Spring-IOC-2

IOC基础

  • Inversion of controller 控制反转, 拥有对象创建的控制权与对象生命周期的管理权.
BeanFactory与ApplicationContext区别
  • BeanFactory容器是顶层接口,定义一些基础功能与基础规范, 而ApplicationContext 容器是高级接口也是BeanFactory的子接口.
  • ApplicationContext拥有更多的功能, 国际化、资源文件读取、类列表展示
Spring-IOC-2
文章图片

Bean的作用范围与生命周期
  • 作用范围与生命周期的关系, 作用范围决定了他的生命周期
作用范围
  • singleton、property、request、session、application、websocket
  • singleton(单例模式)与property(多例模式)使用较多; singleton生命周期为程序启动时到结束、property生命周期为当其使用时创建新对象.
Spring-IOC-2
文章图片

高级特性
【Spring-IOC-2】延迟加载
  • ApplicationContext在实例化的时候也会将singleton objects 提前实例化. 提前实例化意味着作为初始化的一部分. 如果不想让某一singleton object 提前被实例化, 可以标识为懒加载(lazy)
  • 开启延迟加载一定程度提高容器启动和运转性能
  • 对于不常使用的 Bean 设置延迟加载,这样偶尔使用的时候再加载,不必要从一开始该 Bean 就占 用资源
FactoryBean与BeanFactory
  • FactoryBean生成某种类的工具类. 而BeanFactory是容器的顶级接口
  • spring中存在两种Bean, 普通Bean与FactoryBean
  • FactoryBean可以生成某一个类型的Bean实例(返回给我们)
后置处理
  • 两种后置处理Bean的接口, BeanFactoryPostProcessor和BeanPostProcessor
循环依赖
  • 循环引用, 也就是两个或两个以上的Bean互相持有对方, 最终形成闭环.
  • 构造器依赖与属性依赖; 构造器依赖是无法解决的, 只能抛出beanCurrentlyCreationException异常, 在解决这个循环依赖的问题时, spring采用的是提前暴露对象的方法. 通过三级缓存的方式.
Spring-IOC-2
文章图片

    推荐阅读