IOC根底

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

BeanFactoryApplicationContext区别

  • BeanFactory容器是顶层接口,定义一些根底性能与根底标准, 而ApplicationContext 容器是高级接口也是BeanFactory的子接口.
  • ApplicationContext领有更多的性能, 国际化、资源文件读取、类列表展现

Bean的作用范畴与生命周期

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

作用范畴

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

高级个性

提早加载

  • ApplicationContext在实例化的时候也会将singleton objects 提前实例化. 提前实例化意味着作为初始化的一部分. 如果不想让某一singleton object 提前被实例化, 能够标识为懒加载(lazy)
  • 开启提早加载肯定水平进步容器启动和运行性能 
  • 对于不常应用的 Bean 设置提早加载,这样偶然应用的时候再加载,不必要从一开始该 Bean 就占 用资源

FactoryBeanBeanFactory

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

后置解决

  • 两种后置解决Bean的接口, BeanFactoryPostProcessor和BeanPostProcessor

循环依赖

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