44、[源码]-Spring容器创建-BeanFactory预准备
44、[源码]-Spring容器创建-BeanFactory预准备
@Override
public void refresh() throws BeansException, IllegalStateException {
	synchronized (this.startupShutdownMonitor) {
		// Prepare this context for refreshing.
		prepareRefresh();
		// Tell the subclass to refresh the internal bean factory.
		ConfigurableListableBeanFactory beanFactory = obtainFreshBeanFactory();
		// Prepare the bean factory for use in this context.
		prepareBeanFactory(beanFactory);
		try {
			// Allows post-processing of the bean factory in context subclasses.
			postProcessBeanFactory(beanFactory);
			// Invoke factory processors registered as beans in the context.
			invokeBeanFactoryPostProcessors(beanFactory);
		}
}
Spring容器的refresh()【创建刷新】;
1、prepareRefresh()刷新前的预处理;
- initPropertySources()初始化一些属性设置;子类自定义个性化的属性设置方法;
- getEnvironment().validateRequiredProperties();检验属性的合法等
- earlyApplicationEvents= new LinkedHashSet();保存容器中的一些早期的事件;
2、obtainFreshBeanFactory();获取BeanFactory;
- refreshBeanFactory();刷新【创建】BeanFactory;
 创建了一个this.beanFactory = new DefaultListableBeanFactory();
 设置id;
- getBeanFactory();返回刚才GenericApplicationContext创建的BeanFactory对象;
- 将创建的BeanFactory【DefaultListableBeanFactory】返回;
3、prepareBeanFactory(beanFactory);BeanFactory的预准备工作(BeanFactory进行一些设置);
- 设置BeanFactory的类加载器、支持表达式解析器...
- 添加部分BeanPostProcessor【ApplicationContextAwareProcessor】
- 设置忽略的自动装配的接口EnvironmentAware、EmbeddedValueResolverAware、xxx
- 注册可以解析的自动装配;我们能直接在任何组件中自动注入: BeanFactory、ResourceLoader、ApplicationEventPublisher、ApplicationContext
- 添加BeanPostProcessor【ApplicationListenerDetector】
- 添加编译时的AspectJ;
- 给BeanFactory中注册一些能用的组件;
- environment【ConfigurableEnvironment】、
- systemProperties【Map<String, Object>】、
- systemEnvironment【Map<String, Object>】
 
44、[源码]-Spring容器创建-BeanFactory预准备的更多相关文章
- 51、[源码]-Spring容器创建-容器创建完成
		51.[源码]-Spring容器创建-容器创建完成 12.finishRefresh();完成BeanFactory的初始化创建工作:IOC容器就创建完成: 1).initLifecycleProce ... 
- 50、[源码]-Spring容器创建-Bean创建完成
		50.[源码]-Spring容器创建-Bean创建完成 11.finishBeanFactoryInitialization(beanFactory);初始化所有剩下的单实例bean: beanFac ... 
- 48、[源码]-Spring容器创建-初始化事件派发器、监听器等
		48.[源码]-Spring容器创建-初始化事件派发器.监听器等 8.initApplicationEventMulticaster();初始化事件派发器: 获取BeanFactory 从BeanFa ... 
- 47、[源码]-Spring容器创建-初始化MessageSource
		47.[源码]-Spring容器创建-初始化MessageSource 7.initMessageSource();初始化MessageSource组件(做国际化功能:消息绑定,消息解析): 获取Be ... 
- 46、[源码]-Spring容器创建-注册BeanPostProcessors
		46.[源码]-Spring容器创建-注册BeanPostProcessors 6.registerBeanPostProcessors(beanFactory);注册BeanPostProcesso ... 
- 45、[源码]-Spring容器创建-执行BeanFactoryPostProcessor
		45.[源码]-Spring容器创建-执行BeanFactoryPostProcessor 5.invokeBeanFactoryPostProcessors(beanFactory);执行BeanF ... 
- 49、[源码]-Spring容器创建-创建Bean准备
		49.[源码]-Spring容器创建-创建Bean准备 
- Spring源码学习-容器BeanFactory(四) BeanDefinition的创建-自定义标签的解析.md
		写在前面 上文Spring源码学习-容器BeanFactory(三) BeanDefinition的创建-解析Spring的默认标签对Spring默认标签的解析做了详解,在xml元素的解析中,Spri ... 
- Spring源码学习-容器BeanFactory(三) BeanDefinition的创建-解析Spring的默认标签
		写在前面 上文Spring源码学习-容器BeanFactory(二) BeanDefinition的创建-解析前BeanDefinition的前置操作中Spring对XML解析后创建了对应的Docum ... 
随机推荐
- Struts笔记3
			struts标签 form表单标签 Action:请求地址.直接写动作名称,不用写contextPath <s:form action="/user/register.action&q ... 
- go语言的3个包——strconv、os.Args、flag
			1. strconv包: 2. os.Args: 获取运行程序时给出的参数,可以通过os包来实现.看代码: package main import ( "fmt" "os ... 
- 细说浏览器输入URL后发生了什么
			本文摘要: 1.DNS域名解析: 2.建立TCP连接: 3.发送HTTP请求: 4.服务器处理请求: 5.返回响应结果: 6.关闭TCP连接: 7.浏览器解析HTML: 8.浏览器布局渲染: 总结 ... 
- react实现设置答题器选项个数
			一,设置答题器选项import React, { useState, useEffect } from 'react' import PropTypes from 'prop-types' impor ... 
- v8 引擎的内存
			一.nodejs查看内容使用情况: process.memoryUsage() 单位为 Btye 转化函数: var format = function(bytes) { return (bytes/ ... 
- 使用其他身份运行计算机(DOS命令)
			runas/user:administrator cmd d: cd esop sfispri.ini 
- PIE二次开发——大气校正
			窗体设计: 代码: private void button_src_Click(object sender, EventArgs e) { OpenFileDialog openFile = new ... 
- Python 帮你玩微信跳一跳 GitHub Python脚本
			前言想自己搞游戏小程序的 在github 有人已经利用 python程序, 通过adb 获取不同型号安卓手机的系统截图,然后通过计算小人与目标位置距离之后得到准确的触摸时间,再通过 开发者模式里的 a ... 
- DeepID_V2解读
			港中文汤晓鸥团队在DeepID_v1基础上提出的新版本架构,发表于NIPS2014 一.Architecture 网络架构基本上与DeepId_v1一致. 二.Pipeline 图片被分成20regi ... 
- iOS - 基础知识总结(OC版) 面试必看 再不看就要用swift了
			OC的理解与特性 OC作为一门面向对象的语言,自然具有面向对象的语言特性:封装.继承.多态.它既具有静态语言的特性(如C++),又有动态语言的效率(动态绑定.动态加载等).总体来讲,OC确实是一门不错 ... 
