spring 配置类初始化简要流程
2020-04-17 17:53:50   0  举报             
     
         
 spring 配置类启动简要流程
    作者其他创作
 大纲/内容
 bd的解析器,初始化的时候往bdmap中添加一些bd
  初始化了一个RequiredAnnotationBeanPostProcessor,并且放到bdmap中,
  把配置类包装成AnnotatedGenericBeanDefinition
  ScopedProxyMode.NO--------------------直接将bd返回。
    将经过scope处理策略处理过返回的bean放入bdmap中,被放入的bd可能是scopefactorybean
  利用前面初始化的AnnotatedBeanDefinitionReader对配置类进行注册
  bd默认的Scope就是singleton,是这个类在初始化的时候指定的,默认的scoprproxy是ScopedProxyMode.NO
  初始化了ApplicationContext的成员变量ConditionEvaluator
  registerBeanPostProcessors
  finishRefresh
  @Condition-Condition接口的font color=\"#3333ff\
  initMessageSource
  主要用于applicationContext的scan方法使用,并不是spring初始化过程中使用的对象
  初始化了一个AnnotatedBeanDefinitionReader
  finishBeanFactoryInitialization
  AnnotatedBeanDefinitionReader
  font color=\"#3399ff\
  this()
  初始化了一个ConfigurationClassPostProcessor,并且放到bdmap中,
  解析@Condition注解的时候如果没有添加这个注解或者没加注解,那么跳过解析过程。
  注册配置类register(annotatedClasses);
  onRefresh
  initApplicationEventMulticaster
  ClassPathBeanDefinitionScanner
  解析@Scope,如果没加注解,那么默认scopename为singleton,将bd直接添加带bdmap中,scopeproxymode为tagetclass,则利用ScopedProxyFactoryBean来生成bd
  初始化了一个ClassPathBeanDefinitionScanner
  registerListeners
  初始化了一个DefaultEventListenerFactory,并且放到bdmap中,
  初始化了一个CommonAnnotationBeanPostProcessor,并且放到bdmap中,
  invokeBeanFactoryPostProcessors
  递归解析@condition注解
  初始化了一个AutowiredAnnotationBeanPostProcessor,并且放到bdmap中,
  初始化了一个EventListenerMethodProcessor,并且放到bdmap中,
  refresh方法
  解析bd的@Scope,
  为aop设置属性,比如tagetclass,包括判断是不是代理接口
  一个类如果是加了@confgiuration注解,就是全注解(isFullConfigurationCandidate),如果加了Component、ComponentScan、Import、ImportResource、Bean注解,那么就是isLiteConfigurationCandidate
  prepareBeanFactory
  利用前面初始化的ConditionEvaluator来判断这个配置类是否可以跳过解析
  postProcessBeanFactory
    
    收藏 
      
    收藏 
     
 
 
 
 
  0 条评论
 下一页
  
  
  
  
  
  
  
  
  
 