spring的bean创建过程
| 步骤 | 执行过程 | 描述 | 
| 1 | ThreadLocal.set | bean创建之前将beanName的一些属性放进ThreadLocal,避免多线程创建bean导致问题,并发创建会抛BeanCurrentlyInCreationException异常 | 
| 2 | InstantiationAwareBeanPostProcessor.postProcessBeforeInstantiation | bean创建之前的回调,如果该方法返回不为null则不进行bean的创建过程,完成到第13步 | 
| 3 | MergedBeanDefinitionPostProcessor.postProcessMergedBeanDefinition | bean创建之后的回调,处理bean的合并,如Autowire注释的处理器处理注入信息 | 
| 4 | InstantiationAwareBeanPostProcessor.postProcessAfterInstantiation | bean创建之后的回调,如果该方法返回true,则不会进行第5、6步 | 
| 5 | InstantiationAwareBeanPostProcessor.postProcessPropertyValues | 处理BeanDefinition的PropertyValues,为下一步注入属性打基础 | 
| 6 | BeanWrapper.setPropertyValues | 注入依赖:根据上一步处理的结果(即PropertyValues),将bean的属性(字段)赋值 | 
| 7 | BeanNameAware.setBeanName | bean实现了BeanNameAware接口则会调用 | 
| 8 | BeanClassLoaderAware.setBeanClassLoader | bean实现了BeanClassLoaderAware接口则会调用 | 
| 9 | BeanFactoryAware.setBeanFactory | bean实现了BeanFactoryAware接口则会调用 | 
| 10 | BeanPostProcessor.postProcessBeforeInitialization | 初始化方法调用之前的回调,这其中有个processor进行接口方法回调,执行EnvironmentAware、EmbeddedValueResolverAware、ResourceLoaderAware、ApplicationEventPublisherAware、MessageSourceAware、ApplicationContextAware对应方法 | 
| 11 | InitializingBean.afterPropertiesSet | 调用bean的初始化方法,bean实现了InitializingBean接口则会调用afterPropertiesSet方法,PostConstruct注释修饰的方法也会被当做初始化方法 | 
| 12 | BeanPostProcessor.postProcessAfterInitialization | 初始化方法调用之后的回调 | 
| 13 | FactoryBean.getObject | 如果返回的对象是FactoryBean,则进一步调用FactoryBean的getObject方法并最终返回此方法返回的对象,否则直接返回原对象 | 
| 14 | ThreadLocal.remove | bean创建完成之后清空ThreadLocal | 
| 15 | ConcurrentHashMap.put | 如果是单例模式的bean的则放入map缓存类中 | 
spring的bean创建过程的更多相关文章
- Spring MVC 学习 -- 创建过程
		Spring MVC 学习 -- 创建过程 Spring MVC我们使用的时候会在web.xml中配置 <servlet> <servlet-name>SpringMVC< ... 
- Spring 源码 (1)Spring IOC Bean 创建的整体流程
		Spring IOC 中涉及的重要接口 BeanDefinition Bean的描述信息,实现类包括 RootBeanDefinition 和 GenericBeanDefinition,Bean的描 ... 
- Spring装配Bean的过程补充
		对上一篇的<Spring装配Bean的过程>的过程说一下,不然真产生了误区. 误区在哪里呢?那就是spring bean的作用域问题. 说哈常用的两种作用域:默认是scope = sing ... 
- Spring装配Bean的过程
		首先说一个概念:“懒加载” 懒加载:就是我们在spring容器启动的是先不把所有的bean都加载到spring的容器中去,而是在当需要用的时候,才把这个对象实例化到容器中. spring配置文件中be ... 
- Spring的bean创建详解
		IoC容器,又名控制反转,全称为Inverse of Control,其是Spring最为核心的一个组件,其他的组件如AOP,Spring事务等都是直接或间接的依赖于IoC容器的.本文主 ... 
- spring中Bean创建
		Spring中bean的加载过程: 1.获取配置文件资源 2.对获取的xml资源进行一定的处理检验 3.处理包装资源 4.解析处理包装过后的资源 5.加载提取bean并注册(添加到beanDefini ... 
- spring cloud 项目创建过程
		在使用spring cloud 项目创建微服务项目时,遇到过很多坑,现在我将整理如下: 条件:Idea 开发工具 maven 项目 1. 创建一个空的mvn项目. 2. 创建完了就添加Module,首 ... 
- Spring的bean创建方式ref使用方法
		java public class UserServiceImp implements UserService{ private UserDao userDao =null; public void ... 
- Spring-IOC bean 创建过程中的 ObjectFactory
		AbstractBeanFactory中doGetBean方法里有一段拿到RootBeanDefinition后,实例化该bean的方法 // Create bean instance. if (mb ... 
随机推荐
- LeetCode120-Triangle-数组,动态规划
			题目描述 Problem Description: Given a triangle, find the minimum path sum from top to bottom. Each ste ... 
- PHP 获取当前访问的完整URL
			代码如下: <?php // php 获取当前访问的完整url function GetCurUrl() { $url = 'http://'; if(isset($_SERVER['HTTPS ... 
- 项目中使用的artTemplate笔记
			1.注意数据格式为 var results = { data:[ {name:'xiaoming',age:'18'},{name:'xiaohong',age:'18'},{name:'xiaogo ... 
- Linux 搭建批量网络装机
- POJ 1321 棋盘问题(搜索的方式)
			Description 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子 ... 
- lua---研究 c-api
			c-api 参考手册:http://www.leeon.me/a/lua-c-api-manual 
- Axure文本框验证和外部url的调用
			文本框的验证和外部url的调用: 场景: 当输入文本框中的内容是满足下面条件时:输入4-10的数字,页面会跳转到QQ注册(https://ssl.zc.qq.com/v3/index-chs.html ... 
- android  ----- 分享的连接在手机上打开App
			首先做成HTML的页面,页面内容格式如下: <a href="[scheme]://[host]/[path]?[query]">启动应用程序</a> 这一 ... 
- mysql修改当前用户的密码
			ALTER USER USER() IDENTIFIED BY '123456';https://majing.io/posts/10000005531181 
- Element-ui表格选中回显
			先瞄一下,是不是你要的效果 然后,废话不多说,直接上代码啦 <template> <div class> <div class="projectData&quo ... 
