spring
2018-06-30 23:14:48 0 举报
spring的IOC定位加载注册两种方式流程图
作者其他创作
大纲/内容
doRegisterBeanDefinitions()
parseBeanDefinitions()
TCP头
看他们俩书写顺序决定先加载谁
注册
HashTable
DefaultListableBeanFactory
父类静态变量
响应请求
applyPropertyValues()
父类非静态变量
Map
自定义类加载器User ClassLoader
子类连接
BeanDefinitionReaderUtils
封装呱呱叫行为
封装飞行行为
IP头
父类初始化
卸载unload
应用类加载器Appliaction ClassLoader
DefaultBeanDefinitionDocumentReader
转换为比特率进行传输
线程CNode
postProcessXml()
准备(为静态变量分配内存并设置初始值,变量内存在方法区分配的)
解析Resolution
AQS原理简介
子类静态变量
加载
子类静态代码块
doCreateBean()
parseBeanDefinitionsElement()
www.baidu.com
setPropertyValues()
扩展类加载器Extension ClassLoader
HTTP请求报文
registerBeanDefinitions()
寄送的地方
setConfigLocations()
ClassPathXmlApplicationContext
resolveValueIfNecessary()
preProcessXml()
HashSet
类的加载
客户
线程B获取同步状态state为1,将线程B包装成Node节点添加到队列队尾并阻塞线程
AbstractApplicationContext
MAC头
registerBeanDefinition()
.java文件
验证Verification
这些“算法”是可以相互替换的
populateBean()
Queue
编译
寄送的具体的人
网络层
RedHeadDuck
display(){//}
AnnotationConfigApplicationContext
AbstractPropertyAccessor
<interface>QuackBehavior
quack()
数据链路层
子类初始化
instantiate()
无序不可重复
ArrayList
Quack
quack(){//嘎嘎叫}
Set
doRegisterBean()
AbstractBeanFactory
CglibSubclassCreator.instantiate()
子类非静态代码块
Vector
doLoadBeanDefinitions()
把每种行为封装成一个个算法族
.class文件
SortedMap
0101010101010101010
Duck
FlyBehavior flyBehavior;QuackBehavior quackBehavior;fly(){}swim(){}quack(){}
HashMap
XmlBeanDefinitionReader
使用Using
Collection
物理层
线程C获取同步状态state为1,将线程C包装成Node节点添加到队列队尾并阻塞线程
拿到数据后,拿到头部信息对比MAC地址是否是本机,如果正确则去掉MAC头信息,交给上一层处理
加载Loading
FlyWithWings
fly(){//实现飞的行为}
线程A获取同步状态state将0改为1
CglibSubclassingInstantiationStrategy
register()
SpringIOC依赖注入原理:
FlyWithNoWay
fly(){//什么也不做,不会飞}
LinkedHashSet
父类非静态代码块
客户使用封装好的飞行和呱呱叫的算法族
线程A执行完成,将同步状态state由1改为0并唤醒后继节点(BNode),然后删除节点A
传输层
BeanDefinitionValueResolver
Stack
RobborDuck
TreeMap
TreeSet
refresh()
线程B执行完成,将同步状态state由1改为0并唤醒后继节点(CNode),然后删除节点B
子类构造函数
LinkedList
getBean()
SimpleInstantiationStrategy
TCP头中会携带端口,将报文发送给对应端口的进程处理
jvm加载class文件
拿到IP,判断是否是本机,是则去掉IP头部信息继续交给上一层处理
发送请求
LinkedHashMap
MallardDuck
调用loadBeanDefinition()
增加MAC地址,表示当前数据包发送到的网卡地址;MAC地址是全局唯一的
createBean()
doGetBean()
BeanDefinitionParserDelegate
SortedSet
针对当前包裹选择一个快递公司
SpringIOC的实现原理:
定位
释放同步状态
子类非静态变量
源文件
验证(文件格式、元数据、字节码、符号引用)
doLoadDocument()
获取同步状态
通过全限定名以字节流读取.class文件,然后将静态存储转为方法区的运行时数据结构,在内存中生成对应的Class对象
父类静态代码块
有序可重复
初始化Initialization
Squeak
squeak(){//吱吱叫}
instantiateWithMethodInjection()
AnnotatedBeanDefinitionReader
增加IP头,IP地址是网卡在网络中的通讯地址,相当于门牌号
父类连接
连接(Linking)
WeakHashMap
父类构造函数
List
createBeanInstance()
当数据响应过来后
解析(将符号引用解析为直接引用)
线程BNode
MuteQuack
muteQuack(){//不会叫}
<interface>FlyBehavior
fly()
启动类加载器Bootstrap ClassLoader
准备Preparation
打包运输
AbstractAutowireCapableBeanFactory
TCP协议头,表示当前协议为TCP协议
0 条评论
回复 删除
下一页