Deep Analysis of Spring Source Code (Second Edition)-Sequence Diagrams and Source Code (js-sequence-diagrams)

I. Introduction

UML sequence diagram, also called sequence diagram or sequence diagram, is a time sequence used to describe the transmission of messages between objects, and it is used to indicate the sequence of actions in a use case.

Drawing tool: http://webchart.ihuhai.cn/index.html (based on js-sequence-diagrams )

Redraw the sequence diagram in the book to deepen the understanding of the source code.

Second, the timing diagram

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. XmlBeanFactory initialization sequence diagram

2.5 The basic XmlBeanFactory of the container

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.loadBeanDefinitions function execution timing diagram

2.5.2 Load 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. Analysis and registration sequence diagram of bean tag

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))

 

 

Guess you like

Origin blog.csdn.net/cs373616511/article/details/107666901