Spring面试题:(三)SpringBean实例化过程和Spring后置处理器BeanFactoryPostProcessor和BeanPostProcessor

SpringBean实例化过程

Spring面试题:(三)SpringBean实例化过程和Spring后置处理器BeanFactoryPostProcessor和BeanPostProcessor_第1张图片
图解
Spring面试题:(三)SpringBean实例化过程和Spring后置处理器BeanFactoryPostProcessor和BeanPostProcessor_第2张图片
BeanDefinition
Spring面试题:(三)SpringBean实例化过程和Spring后置处理器BeanFactoryPostProcessor和BeanPostProcessor_第3张图片

Spring后处理器:BeanFactoryPostProcessor和BeanPostProcessor

Spring面试题:(三)SpringBean实例化过程和Spring后置处理器BeanFactoryPostProcessor和BeanPostProcessor_第4张图片

BeanFactoryPostProcessor接口

Spring面试题:(三)SpringBean实例化过程和Spring后置处理器BeanFactoryPostProcessor和BeanPostProcessor_第5张图片

BeanFactoryPostProcessorz子接口BeanDefinitionRegistryPostProcessor

Spring面试题:(三)SpringBean实例化过程和Spring后置处理器BeanFactoryPostProcessor和BeanPostProcessor_第6张图片

图解BeanFactoryPostProcessor在Bean实例化过程种的作用

Spring面试题:(三)SpringBean实例化过程和Spring后置处理器BeanFactoryPostProcessor和BeanPostProcessor_第7张图片
BeanFactoryPostProcessor使用示例:开发自定义注解,实现注册Bean
Spring面试题:(三)SpringBean实例化过程和Spring后置处理器BeanFactoryPostProcessor和BeanPostProcessor_第8张图片

  1. 开发注解接口MyComponent,加入String属性
  2. 继承BeanFactoryPostProcessor类或者BeanDefinitionRegistryPostProcessor类,实现方法
  3. 扫描包下面的所有类,获取有MyComponent注解的类及其参数
  4. 创建BeanDefinition类,注册到BeanDefinitionMap

BeanPostProcessor

在这里插入图片描述

BeanPostProcessor接口定义

Spring面试题:(三)SpringBean实例化过程和Spring后置处理器BeanFactoryPostProcessor和BeanPostProcessor_第9张图片

BeanPostProcessor执行时机

实例化
BeanPostProcessor前置方法
init初始化方法
BeanPostProcessor后置方法

BeanPostProcessor使用示例:实现AOP,打印时间

Spring面试题:(三)SpringBean实例化过程和Spring后置处理器BeanFactoryPostProcessor和BeanPostProcessor_第10张图片

  1. 继承BeanPostProcessor类,实现两个方法
  2. 在BeanPostProcessor前置方法创建动态代理对象,在invoke方法前后增加打印时间的日志
  3. 返回动态代理对象,进而存储到单例池
    Spring面试题:(三)SpringBean实例化过程和Spring后置处理器BeanFactoryPostProcessor和BeanPostProcessor_第11张图片

图解BeanPostProcessor在Bean实例化过程种的作用

Spring面试题:(三)SpringBean实例化过程和Spring后置处理器BeanFactoryPostProcessor和BeanPostProcessor_第12张图片

你可能感兴趣的:(spring,java,面试)