Análisis profundo del código fuente de Spring (segunda edición) -Diagramas de secuencia y código fuente (js-sequence-diagrams)

I. Introducción

El diagrama de secuencia UML, también llamado diagrama de secuencia o diagrama de secuencia, es una secuencia de tiempo que se usa para describir la transmisión de mensajes entre objetos y se usa para representar la secuencia de acciones en un caso de uso.

Herramienta de dibujo: http://webchart.ihuhai.cn/index.html (basado en js-sequence-diagrams )

Vuelva a dibujar el diagrama de secuencia en el libro para profundizar la comprensión del código fuente.

En segundo lugar, el diagrama de tiempos

public static void main(String[] args) throws IOException {
		//测试
		ClassPathResource classPathResource = new ClassPathResource("beans.xml");
		BeanFactory bf = new XmlBeanFactory(classPathResource);
		MyTestBean myTestBean = (MyTestBean) bf.getBean("myTestBean");
		System.out.println(myTestBean.getA());
}

1. Diagrama de secuencia de inicialización de XmlBeanFactory

2.5 El XmlBeanFactory básico del contenedor

title:XmlBeanFactory 初始化时序图
Test->ClassPathResource: new ClassPathResource("beans.xml")
ClassPathResource-->Test:classPathResource
Test->XmlBeanFactory:new XmlBeanFactory(classPathResource)
XmlBeanFactory-->XmlBeanFactory: new XmlBeanDefinitionReader(this):reader
XmlBeanFactory->XmlBeanDefinitionReader:this.reader.loadBeanDefinitions(resource)
XmlBeanDefinitionReader-->XmlBeanFactory:loadBeanDefinitions(new EncodedResource(resource)):int
XmlBeanFactory-->Test:bf:BeanFactory

2.diagrama de tiempo de ejecución de la función loadBeanDefinitions

2.5.2 Cargar Bean

title:loadBeanDefinitions 函数执行时序图
XmlBeanFactory->reader:XmlBeanDefinitionReader:loadBeanDefinitions(resource)
reader:XmlBeanDefinitionReader->encodedResource:EncodedResource:new EncodedResource(resource)
encodedResource:EncodedResource-->reader:XmlBeanDefinitionReader:encodedResource:EncodedResource
reader:XmlBeanDefinitionReader-->reader:XmlBeanDefinitionReader:loadBeanDefinitions(encodedResource)
reader:XmlBeanDefinitionReader-->reader:XmlBeanDefinitionReader:通过encodedResource获取inputStream
reader:XmlBeanDefinitionReader-->reader:XmlBeanDefinitionReader:doLoadBeanDefinitions(inputSource, encodedResource.getResource())\nreturn loadBeanDefinitionNum(加载数量):int
reader:XmlBeanDefinitionReader-->XmlBeanFactory:loadBeanDefinitionNum(加载数量)

3. Diagrama de secuencia de análisis y registro de la etiqueta de frijol

title:bean标签的解析及注册时序图
DefaultBeanDefinitionDocumentReader-->DefaultBeanDefinitionDocumentReader:processBeanDefinition(ele, delegate)
DefaultBeanDefinitionDocumentReader->BeanDefinitionParserDelegate:delegate.parseBeanDefinitionElement(ele)
BeanDefinitionParserDelegate-->DefaultBeanDefinitionDocumentReader:bdHolder:BeanDefinitionHolder
DefaultBeanDefinitionDocumentReader->BeanDefinitionParserDelegate:delegate.decorateBeanDefinitionIfRequired(ele, bdHolder)
BeanDefinitionParserDelegate-->DefaultBeanDefinitionDocumentReader:bdHolder:BeanDefinitionHolder
DefaultBeanDefinitionDocumentReader->BeanDefinitionReaderUtils:BeanDefinitionReaderUtils.registerBeanDefinition(bdHolder, getReaderContext().getRegistry())
DefaultBeanDefinitionDocumentReader->XmlReaderContext:getReaderContext().fireComponentRegistered(new BeanComponentDefinition(bdHolder))

 

 

Supongo que te gusta

Origin blog.csdn.net/cs373616511/article/details/107666901
Recomendado
Clasificación