本文先介绍@Bean涉及到的核心类和核心方法 以及执行流程
个人总结:
配置类注解 与 模式注解 在Spring中是核心注解 它们在Bean生命周期中的作用如下:

Spring中的注解标注的 Class 类都会被解析成 BeanDefinition(Bean 的“前身”),然后实例化为早期Bean,再进行Bean的属性注入,最后会被初始化成完整Bean对象(如果需要代理则会创建Bean代理对象)。
对于XML配置的Bean,比注解配置的Bean,多了前期的几步:
加载配置资源文件,解析资源文件 ,后面的流程一致都统一解析成 BeanDefinition
对应模式注解
ClassPathBeanDefinitionScanner 扫描器,去扫描指定路径下符合条件的 BeanDefinition 们,这个类就是处理 @Component 注解定义 Bean 的底层实现。@ComponentScan 注解的原理也是基于这个扫描器来实现的
对于配置类注解
创建BeanFactory 后会调用所有的 BeanFactoryPostProcessor 处理器对其进行后置处理。@Bean 注解就是在这个过程被解析的,解析过程大致就是遍历所有的 BeanDefinition,如果其内部包含 @Bean 标注的注解,则会将该方法解析出一个 BeanDefinition 对象并注册。当然,除了 @Bean 注解外,例如 @ComponentScan、@Import、@ImportResource、@PropertySource 注解都是在该过程中进行解析的
主要流程如下图所示:

总的来说:spring核心有四块需要深入掌握
配置加载 (XML配置和注解配置)
生命周期(Bean的 和 容器本身的)
增强拓展 (AOP模块)
Web处理 (MVC模块)