1. Spring整体架构
Spring框架是一种分层架构,它包含了一系列的功能,大概由20种模块组成。 这些模块分为核心容器(Core Container), 数据访问/集成(Data Access/Integration), Web, AOP, 工具(Instrumentation), 消息(Messaging), 测试用例(Test).
1.1 核心容器(Core Container)
包含模块spring-core, spring-beans, spring-context, spring-context-support,spring-expression.
15套java框架源码深度剖析视频教程(spring5,mybatis,springboot,dubbo,netty,zookeeper,tomcat,springmvc,jdk),框架底层架构与源码设计原理,主流框架的源码分析,提升框架设计与实现能力视频教程
学习框架源码 是Java开发快速提升的秘诀,进阶高级和架构师的必修之路;吃透Java开发热门框架源码,实力比肩阿里P6;更全更体系化的源码解析,带你深探框架设计逻辑;深度解析框架源码 让你怎么面试都不怕;
总目录:15套源码系列Spring5,Mybatis,SpringBoot,Dubbo,Netty,Zookeeper,Tomcat,SpringMVC,ArrayList,LinkedList源码深度解析,框架底层架构与源码设计原理,主流框架的源码分析,提升框架设计与实现视频教程
所有的ApplicationContext都实现了ResourceLoader接口,因此ApplicationConetxt可以获取Resource实例。当调用getReource()方法时,如果路径没有指定前缀,那将会获得一个适应于上下文的Resource. 如ClassPathXmlApplicationContext获得ClassPathResource,WebApplicationContext获取的ServletContextResource等的。
3.4 ResourceLoaderAware接口
实现ResourceLoaderAware并将其注册到ApplicationContext后,应用上下文就会执行setResourceLoader(ResourceLoader)方法,提供ResourceLoader引用。
之前也讲过,ApplicationConetxt实现了ResourceLoader,所以它本身就是一个ResourceLoader,所以也可以实现ApplicationContextAware获取到ApplicationContext将其转换为ResourceLoader,但通常不建议这样做,因为很多时候仅仅只是获取ResouceLoader而不是获取整个ApplicationContext