《Spring源码深度解析》从核心实现和企业应用两个方面,由浅入深、由易到难地对Spring源码展开了系统的讲解,包括Spring的设计理念和整体架构、容器的基本实现、默认标签的解析、自定义标签的解析、bean的加载、容器的功能扩展、AOP、数据库连接JDBC、整合MyBatis、事务、SpringMVC、远程服务、Spring消息服务等内容。 《Spring源码深度解析》不仅介绍了使用Spring框架开发项目必须掌握的核心概念,还指导读者如何使用Spring框架编写企业级应用,并针对在编写代码的过程中如何优化代码、如何使得代码高效给出切实可行的建议,从而帮助读者全面提升实战能力。 《Spring源码深度解析》语言简洁,示例丰富,可帮助读者迅速掌握使用Spring进行开发所需的各种技能。《Spring源码深度解析》适合于已具有一定Java编程基础的读者,以及在Java平台下进行各类软件开发的开发人员、测试人员等。
3.第三个方法createSpringFactoriesInstances是创建了上述类型的实例,
4.第四个方法AnnotationAwareOrderComparator.sort(instances);会根据AnnotationAwareOrderComparator的排序规则进行排序执行,将instances进行排序。
最后在外面将这些排序好的initializers设置到了SpringApplication的initializers的属性之中。
在springApplication的initialize方法的后面一个方法setListeners((Collection) getSpringFactoriesInstances(ApplicationListener.class));中是设置org.springframework.context.ApplicationListener类的实例到类SpringApplication的listeners属性当中。
springApplication的initialize方法中的最后一个方法this.mainApplicationClass = deduceMainApplicationClass();是获取启动类,其方法如下:
大概解释一下每个类(源码中的注释已经解释很清楚了)
(1)AbstractConfig:配置解析的工具方法、公共方法,提供几个主要的方法appendAnnotation,appendProperties,appendParameters,appendAttributes。
(2)AbstractMethodConfig:封装了一些方法级别的相关属性
(3)AbstractInterfaceConfig:封装了接口契约需要的属性
(4)AbstractReferenceConfig:主要是引用实例的配置
而ReferenceConfig中,会获取消费者全局配置,然后进行一个初始化。
2,ServiceConfig(为提供服务端的配置相关类,包含一些运行时数据)
继承关系如下:
原文地址:https://www.cnblogs.com/java168/p/10004122.html