Bean是什么?
交由Spring自动管理的对象,都被称为Bean
如何创建的?
① class(xxx.class) :先识别带有@Component注解的类——》
②推断构造法:如果类里有多个构造方法,Spring会去寻找谁是无参构造,如果有,就直接使用;没有就会报错,因为无法确定具体用哪个构造法【通过byType和byName去Spring的容器里去寻找所需要的参数】 ——》
③ 实例化:识别到注解,基于此类对其进行实例化 ——》
④得到对象——》
⑤属性填充:判断对象有没有属性需要注入——》
⑥初始化:回去判断当前这个类是否实现了InitializingBean接口,如果实现了则调用对象的afterPropertiesSet()方法初始化,内容可以自行定义,给对象里面的属性进行赋值——》
⑦【如果有AOP,这里执行切面逻辑——》
代理对象——》
无属性填充,因为aop切入的是方法,没有必要再给对象填充属性,相关属性会为空)】——》
⑧Bean对象:赋值完了以后此对象才正式成为Bean对象,才能从Spring容器中拿出来使用【AOP的情况下,这里拿到的是AOP的代理对象】