# spring-framework **Repository Path**: csuliunian/spring-framework ## Basic Information - **Project Name**: spring-framework - **Description**: spring 源码 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-10-15 - **Last Updated**: 2024-06-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### 构建代码准备工作 1. gradle下载路径配置,build.gradle,如果自动下载不方便,则可以先下载然后指定本地路径 # 解析配置文件 ## 核心类 ### XmlBeanDefinitionReader # 容器 核心类DefaultListableBeanFactory,继承了AbstractAutowireCapableBeanFactory并实现了ConfigurableListableBeanFactory以及BeanDefinitionRegistry接口。 - AliasRegistry:定义对alias的简单增删改等操作。 - SimpleAliasRegistry:主要使用map作为alias的缓存,并对接口AliasRegistry进行实现。 - SingletonBeanRegistry:定义对单例的注册及获取。 - BeanFactory:定义获取bean及bean的各种属性。 - DefaultSingletonBeanRegistry:对接口SingletonBeanRegistry各函数的实现。 - HierarchicalBeanFactory:继承BeanFactory,也就是在BeanFactory定义的功能的基础上增加了对parentFactory的支持。 - BeanDefinitionRegistry:定义对BeanDefinition的各种增删改操作。 - FactoryBeanRegistrySupport:在DefaultSingletonBeanRegistry基础上增加了对FactoryBean的特殊处理功能。 - ConfigurableBeanFactory:提供配置Factory的各种方法。 - ListableBeanFactory:根据各种条件获取bean的配置清单。 - AbstractBeanFactory:综合FactoryBeanRegistrySupport和ConfigurableBeanFactory的功能。 - AutowireCapableBeanFactory:提供创建bean、自动注入、初始化以及应用bean的后处理器。 - AbstractAutowireCapableBeanFactory:综合AbstractBeanFactory并对接口Autowire Capable BeanFactory进行实现。 - ConfigurableListableBeanFactory:BeanFactory配置清单,指定忽略类型及接口等。 - DefaultListableBeanFactory:综合上面所有功能,主要是对bean注册后的处理。 # Spring Framework [![Build Status](https://ci.spring.io/api/v1/teams/spring-framework/pipelines/spring-framework-5.3.x/jobs/build/badge)](https://ci.spring.io/teams/spring-framework/pipelines/spring-framework-5.3.x?groups=Build") This is the home of the Spring Framework: the foundation for all [Spring projects](https://spring.io/projects). Collectively the Spring Framework and the family of Spring projects are often referred to simply as "Spring". Spring provides everything required beyond the Java programming language for creating enterprise applications for a wide range of scenarios and architectures. Please read the [Overview](https://docs.spring.io/spring/docs/current/spring-framework-reference/overview.html#spring-introduction) section as reference for a more complete introduction. ## Code of Conduct This project is governed by the [Spring Code of Conduct](CODE_OF_CONDUCT.adoc). By participating, you are expected to uphold this code of conduct. Please report unacceptable behavior to spring-code-of-conduct@pivotal.io. ## Access to Binaries For access to artifacts or a distribution zip, see the [Spring Framework Artifacts](https://github.com/spring-projects/spring-framework/wiki/Spring-Framework-Artifacts) wiki page. ## Documentation The Spring Framework maintains reference documentation ([published](https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/) and [source](src/docs/asciidoc)), Github [wiki pages](https://github.com/spring-projects/spring-framework/wiki), and an [API reference](https://docs.spring.io/spring-framework/docs/current/javadoc-api/). There are also [guides and tutorials](https://spring.io/guides) across Spring projects. ## Micro-Benchmarks See the [Micro-Benchmarks](https://github.com/spring-projects/spring-framework/wiki/Micro-Benchmarks) Wiki page. ## Build from Source See the [Build from Source](https://github.com/spring-projects/spring-framework/wiki/Build-from-Source) Wiki page and the [CONTRIBUTING.md](CONTRIBUTING.md) file. ## Stay in Touch Follow [@SpringCentral](https://twitter.com/springcentral), [@SpringFramework](https://twitter.com/springframework), and its [team members](https://twitter.com/springframework/lists/team/members) on Twitter. In-depth articles can be found at [The Spring Blog](https://spring.io/blog/), and releases are announced via our [news feed](https://spring.io/blog/category/news). ## License The Spring Framework is released under version 2.0 of the [Apache License](https://www.apache.org/licenses/LICENSE-2.0).