wuqiu-ai / daily-interviews

java面试之每日一练
0 stars 0 forks source link

[Spring] 你了解Spring IOC么 第21天 2020-09-16 #95

Open wuqiu-ai opened 4 years ago

wuqiu-ai commented 4 years ago

你了解Spring IOC么?

wuqiu-ai commented 4 years ago

IOC优势:

避免各处使用new来创建类,并且可以做到统一维护

IOC支持的功能:

IOC容器实现

  1. BeanDefinition

    bean定义

  2. BeanDefinitionRegistry

    bean注册,DefaultListableBeanFactory

  3. BeanFactory

    spring框架最核心实现

BeanFactory与ApplicationContext的比较

ApplicationContent的功能比较强大:

  1. BeanFactory:管理、装配Bean
  2. ResourcePatternResolver:能够加载资源文件
  3. MessageSource:能够实现国际化等功能
  4. ApplicationEventPublisher:能够注册监听器,实现监听机制
wuqiu-ai commented 4 years ago

Spring Bean的作用域

  1. singleton:Spring的默认作用域,容器里拥有唯一的Bean实例
  2. prototype:针对每个getBean请求,容器都会创建一个Bean实例
  3. request:会为每个Http请求创建一个Bean实例
  4. session:会为每个session穿件一个Bean实例
  5. globalSession:会为每个全局Http Session创建一个Bean实例,该作用域仅对portel有效
wuqiu-ai commented 4 years ago

Spring Bean的生命周期

  1. 实例化Bean
  2. Aware(注入Bean id、beanFactory和ApplicationContent)
  3. BeanPostProcessor.postProcessBeforeInitialization
  4. InitialzingBean.afterPropertiesSet
  5. 定制Bean init方法
  6. BeanPostProcessor.postProcessAfterInitialization
  7. Bean 实例化完毕

Bean的销毁过程

  1. 若实现了DisposableBean接口,则会调用destory方法
  2. 若配置了destory-method属性,则会调用其配置的销毁方法