Spring源码-带着问题学习

spring可以说是java有史以来最为庞大,应用最为广泛的框架,在看源码之前应该先立足于某一点在逐步发散到面。本文主要是整理观看spring源码前/中遇到的问题,以便于读代码更有针对性

spring的IOC和AOP

问题:

  1. Spring容器中的Bean的生命周期是什么?
  2. 对应的PostProcessor什么时候执行?有什么作用
  3. BeanDefinition的架构以及spring的设计思想
  4. BeanFactory和ApplicationContext的关系是什么?他们的作用是什么?
  5. ApplicationContext的构造函数都做了什么?
    1. scan/register做了什么事?
    2. refresh做了什么事?
    3. refresh的详细的流程,对照着bean的生命周期看
  6. AnnotationConfigUtils.registerAnnotationConfigProcssors做什么用的?
  7. Spring的自动装配策略是什么(byType–>Primary–>Propity–>ByName)具体见临时链接
  8. ClassPathBeanDefinitionScanner、AnnotatedBeanDefinitionReader的作用 Spring源码-类扫描器-ClassPathBeanDefinitionScanner
  9. 为什么@Component、@Repository、@Controller、@Service以及JavaEE6的@ManagedBean和@Named注解这些注解能注册到容器中Spring源码-实现自定义注解
  10. Spring如何实现自定义注解,它是怎么实现的(CommponentScan,inculudFilter)
  11. Resource到BeanDefiniton的过程相关的问题,从resource–>SimpleMetadataReader–>BeanDefinition(since 2020-01-28)
    1. SimpleMetadataReader的作用是什么?
    2. 需要用到的spring-io中的ResourceLoader需要明确是做什么用的
    3. SimpleMetadataReader构造方法中用到了spring-asm是做什么用的
    4. Lookup注解干什么用的