xml(提前定义好bean对象的描述信息)/yaml
⬇
BeanDefinitionReader(抽象接口,定义读取配置文件的规范)
⬇
BeanDefinition(定义bean信息,应该有的属性,构造器参数用来被创建)
⬇
new/反射
⬇
实例化(在堆中开辟一块空间,属性都是默认值)
⬇
初始化(给属性完成赋值操作,1.赋值; BeanPostProcessor:before–2.调用初始化方法–BeanPostProcessor:after)
⬇
完整Bean对象
反射:1.先获取Class对象
Class clazz = Class.forName("完全限定名(包名+类名)");
Class clazz = 对象.getClass();
Class clazz = 类.class
2.反射后通过BeanFactory获取实例化bean对象
Constructor ctor = clazz.getDeclareConstructor();
Object obj = ctor.newInstance();