Spring源码解析之BeanFactoryPostProcessor(一)

BeanFactoryPostProcessor

在前面几个章节,笔者有介绍过BeanFactoryPostProcessor,在spring在解析BeanDefinition之后,正式初始化bean之前,会回调我们编写的BeanFactoryPostProcessor接口,接口会传入beanFactory对象,我们可以新增或修改BeanDefinition。spring初始化bean一个典型的流程,就是根据我们标记在类上的@Component生成一个BeanDefinition,BeanDefinition中包含类名或class对象,然后根据class对象生成实例。如果我们编写两个Service:UserService和OrderService,并在类上标注@Component,再编写一个BeanFactoryPostProcessor接口,在接口中我们拿到UserService的BeanDefinition,并修改class为OrderService,那么我们从spring容器中获取userService这个bean,它的类型是UserService呢还是OrderService呢?来看下面的示例:

package org.example.service; import org.springframework.stereotype.Component; @Component public class OrderService { } package org.example.service; import org.springframework.stereotype.Component; @Component public class UserService { }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpyzdw.html