BeanDefinition是什么,直接翻译过来,就是bean的定义。spring在生成bean之前会将所有bean的信息收集起来,分别放进一个beanDefinition。(其中的信息包含:Bean的属性、是否单例、延迟加载、Bean的名称、构造方法等)
上面提到收集bean的信息,那么spring是如何收集的呢。答案就是扫描。扫描xml文件,@Bean,@Component等常见的注解就可以了。
生成的beanDefinition会存进名为beanDefinitionMap的键值对中,以供后续查找。
总结:
spring在启动时会扫描所有能生成bean的信息来生成beanDefinition。每有一个bean就会对应生成一个beanDefinition,然后将bean的信息保存在beanDefinition中。接着把beanDefinition保存在beanDefinitionMap中,后续生成bean时再调用。