spring重点后置处理器

1. DefaultListableBeanFactory的作用:

  默认实现了ListableBeanFactory和BeanDefinitionRegistry接口,基于bean definition对象,是一个成熟的bean factroy。

  最典型的应用是:在访问bean前,先注册所有的definition(可能从bean definition配置文件中)。使用预先建立的bean定义元数据对象,从本地的bean definition表中查询bean definition因而将不会花费太多成本。

  DefaultListableBeanFactory既可以作为一个单独的beanFactory,也可以作为自定义beanFactory的父类。

2.ConfigurationClassPostProcessor最重要的核心后置处理器之一

  a、核心流程的入口

  b、注解的收集

  c、ImportSelector接口和DeferredImportSelector接口和ImportBeanDefinitionRegistrar接口
  d、其他注解的收集
  e、注册BeanDefinition
  f、处理@Configuration注解

    1、解析被@Configuration修饰的配置类
      这里是首先是启动类加入了容器,所以只有启动类扫描到@Configuration
      parse().doProcessConfigurationClass()会解析启动类其它@PropertySource、@ComponentScan、@Import、@ImportResource、@Bean其它注解

    2、解析@ComponentScan扫描的包
      解析到启动类没有配置默认basePackages,会把启动类包路径作为basePackages

        if (basePackages.isEmpty()) {
          basePackages.add(ClassUtils.getPackageName(declaringClass));
        }

     然后会doScan()扫描目录下所有class,判断是否@component(@servic、@controller等等底层都是@component)注解,有则加入beanDefinitions

    3、解析被@Import注解修饰的类
      会递归寻找@import注解引入的类,然后加入到有则加入beanDefinitions,
      springboot就是原理在这个过程中通过解析spring.factories文件获取所有引入的class

    4、解析被@bean注解修饰的类

 

3.ServletWebServerFactoryAutoConfiguration 默认tomcat作为springboot容器

  AbstractApplicationContext#onRefresh()会调用ServletWebServerApplicationContext创建tomcat
  AbstractApplicationContext#finishRefresh()完成启动

 

4.AutowiredAnnotationBeanPostProcessor:处理被@Autowired注解修饰的bean并注入

5.RequiredAnnotationBeanPostProcessor:处理被@Required注解修饰的方法

6.CommonAnnotationBeanPostProcessor:处理@PreDestroy、@PostConstruct、@Resource等多个注解的作用

posted @ 2024-02-27 18:33  低调人生  阅读(19)  评论(0编辑  收藏  举报