Spring容器的工作原理概述
Spring会先注册Bean的BeanDefinition到容器;
根据BeanDefinition创建Bean实例 ,创建过程中会对bean进行初始化、根据情况对bean进行增强返回代理对象等
(1)什么时候注册BeanDefinition
可以在· DefaultListableBeanFactory#registerBeanDefinition中加**"条件断点"** - beanName.equals("????") ,查看???的BeanDefinition什么时候注册到容器中。

(1.2)什么时候创建实例
AbstractAutowireCapableBeanFactory#doCreateBean方法中加**"条件断点"** - beanName.equals("????") ,查看???的Bean实例是什么时创建的。
对bean实例进行赋值、初始化、增强等都在这个方法里。
(1.3)什么时候@Value
将@Value("${??}")中的??设置为错误的属性,让其报异常,然后查看异常的调用栈,给对应的方法上打上断点
(1.4)什么时候@Autowire
让@Autowire的属性或方法参数没有对应的值,让其报异常,然后查看异常的调用栈,给对应的方法上打上断点