- BeanPostProcessor(后置处理器)
- spring提供给程序员的一个扩展点,实现BeanPostProcessor可以插手bean的实例过程,实例化之后,在bean被放到spring的bean容器管理前干活
- 经典场景@PostConstruct、aop
- BeanFactoryPostProcessor
- springBean容器当中,任意的一个bean被new出来之前执行,针对beanFactory来建设
- 经典场景:ConfigrationClassPostProcessor#postProcessBeanFactory这个配置类,针对配置类加上cglib代理
- BeanDefinitionResgistryPostProcessor(BeanFactoryPostProcessor的子类)
- 在BeanFactoryPostProcessor 执行,因为底层源码中先遍历BeanDefinitionResgistryPostProcessor(有系统提供的,还有自定义的,先执行系统自定义的)
- 经典场景:ConfigrationClassPostProcessor,扫描、3种import的扫描,@bean的扫描,判断配置类是不是一个完整的配置类(full,lite。cglib和非cglib),解析配置类
- importSelector
- 通过这个方法selectImports返回一个类名(全名),把它变成bd,动态添加bd(这个bd是死的),也可以动态扫描,变成bd
- ImportBeanDefinitionRegistrar
- 功能与importSelector大致相同,但是ImportBeanDefinitionRegistrar会提供给我们spring的注册器register,可以让我们手动修改bd,注册到spring容器中