bean的创建
获取类class
推断构造方法 @Autoware
创建一个普通对象
依赖注入 populateBean 把一些属性注入
初始化之前 @PostConstruct 注解 初始注入 实际可以用构造方法啊
初始化 initializationBean
1.判断是否有aware接口 invokeAwareMethods
2.执行 applyBeanPostProcessorsBeforeInitialization
3. 初始化方法 invokeInitMethods
4. applyBeanPostProcessorsAfterInitialization
getBeanPostProcessors() 数组不为空 里面有AbstractAutoProxyCreator 继承了procecss
初始化后 AOP
cglib生产代理对象
Spring 5.x中AOP默认依旧使用JDK动态代理
SpringBoot 2.x开始,AOP为了解决使用JDK动态代理可能导致的类型转换异常,而使用CGLIB。
在SpringBoot 2.x中,AOP如果需要替换使用JDK动态代理可以通过配置项spring.aop.proxy-target-class=false来进行修改,proxyTargetClass配置已无效。
放入concurrentHashMap
产生bean对象
1.bean 创建
2.spring 推断构造方法
在spring创建中,当出现多个构造方法时,如果没有默认构造方法,会出现报错
可以采用Autowawired实现指定对应的构造方法
或者
如果采用xml配置 也可以指定对应的构造方法
3.bean的获取
在缓存池中,存在一个currentHashMap 保存着bean