- 循环依赖如何发生?
- spring如何解决循环依赖
实例化
填充属性
初始化
销毁
refresh方法是Spring容器最核心的方法
Spring IOC
容器 在初始化时主要做以下三件事:
BeanDefinition
的Resource定位BeanDefinition
的载入和解析BeanDefinition
在容器中的注册BeanDefinition 是 Spring-framework 的基石
官网对于 org.springframework.core.io.Resource 的一段说明: https://docs.spring.io/spring-framework/docs/5.2.7.RELEASE/spring-framework-reference/core.html#resources-introduction
Java’s standard java.net.URL class and standard handlers for various URL prefixes, unfortunately, are not quite adequate enough for all access to low-level resources. For example, there is no standardized URL implementation that may be used to access a resource that needs to be obtained from the classpath or relative to a ServletContext. While it is possible to register new handlers for specialized URL prefixes (similar to existing handlers for prefixes such as http:), this is generally quite complicated, and the URL interface still lacks some desirable functionality, such as a method to check for the existence of the resource being pointed to.
Spring’s Resource interface is meant to be a more capable interface for abstracting access to low-level resources.
在 Java 中,将不同来源的资源抽象成 java.net.URL ,即统一资源定位器(Uniform Resource Locator),然后通过注册不同的 handler ( URLStreamHandler )来处理不同来源的资源的读取逻辑,一般 handler 的类型使用不同前缀(协议, Protocol )来识别,如“file:”“http:” “jar:”等,然而 URL 没有默认定义相对 Classpath 或 ServletContext 等资源的 handler ,虽然可以注册自己的 URLStreamHandler 来解析特定的 URL 前缀(协议), 比如“classpath:”,然而这需要了解 Url 的实现机制,实现也比较复杂,而且 Url 也没有提供一些基本的方法,如检查当前资源是否存在、检查当前资源是否可读等方法。 因而 Spring 对其内部使用到的资源实现了自己的抽象结构 : Resource 接口封装底层资源,(《Spring源码深度解析 第二版》,略微修改)然后通过 ResourceLoader 接口来实现 Resource 的加载策略,也即是提供了统一的资源定义和资源加载策略的抽象。通过不同策略进行的所有资源加载,都可以返回统一的抽象给客户端,客户端对资源可以进行的操作,则由 Resource 接口进行界定,具体如何处理,则交由不同来源的资源实现类来实现。
Resource
:提供统一的资源定义抽象,界定了对资源可以进行的处理操作。例如:文件资源( FileSystemResource ) 、 Classpath 资源( ClassPathResource )、 URL 资源( UrlResource )、 InputStream 资源( InputStreamResource ) 、Byte 数组( ByteArrayResource )等 。ResourceLoader
:提供统一的资源加载策略抽象,返回统一的 Resource 资源抽象给客户端。本文主要内容: 搭建spring-framework 编译调试环境源码
https://github.com/Code-13/spring-framework
本系列博客的参考均来源自 Spring官方文档
本系列的学习与理解思路均按照自己的方式进行
本系列所用的参考均会列出;如有雷同,纯属借鉴
如有错误或者纰漏,纯属能力/经验/知识面不足,望各位读者大佬不吝指正,共同进步