创建BeanDefinition bean定义
设置BeanDefinition 的类信息,作用域信息
创建beanDefinitionMap
scope为原型:
scope为单例:
总结:
扫描@ComponentScan注解上的包扫描路径,将@Component注解修饰的类,生成BeanDefination,放入beanDefinitionMap,根据scope属性决定对象的创建时机,如果是单例,则创建出来放到singletonObjectsMap,如果是原型则不创建;在获取bean时,单例则直接从singletonObjectsMap获取,原型则再次创建bean。
@Component优化
Autowired注解 做依赖注入
初始化前 执行@PostContruct修饰的方法
模拟InitializingBean初始化操作
BeanPostProcessor 初始化前 初始化后
遍历执行:
BeanPostProcessor 实现AOP
先执行切面逻辑,再执行普通的方法test()。
通过BeanPostProcessor 实现其他扩展功能。
如自定义@value。
Aware回调接口 spring中实现对应的接口就会进行回调
源码中的aware