Spring Framework模块体系
在我们谈论Spring框架的时候,我们主要讨论的是IOC
和AOP
两块,所以从源码解析角度出发,我们这里主要关注以下两块:
-
Core Container
这块也就是IOC
的实现模块。我们需要清除其中包括的4个模块具体的分工。- Core:是核心工具类,就像我们平时分模块的时候,会封装统一工具类,方便到时候其它模块引用,避免反复造轮子。
- Beans:这里是
IOC
的核心实现,涉及了配置文件的访问,还有主要对Bean的管理。 - Context:该模块就是基于
Core
和Beans
模块,在继承Beans的特性的同时,提供了大量的核心扩展:国际化、事件传播、资源价值等。其中引入了ApplicationContext
接口更是关键。也实现了对IOC
容器的具体应用,有我们熟悉的Cache、RMI、Schedule、Validation等。 - SpEL:表达式语言,也是我们经常忽视的一块,但如果自己写框架(指基于Spring生态构建的),这块还是很重要的,比如:jetcache(这里一些的动态功能,主要也是通过注解中表达式语言的应用)。
AOP
面向方面的编程。Core Container
更关注的是对实例纵向的定制,不断的扩展单个Bean实例的能力,而我们需要对广度的操作,就需要通过AOP
,从全局把控的角度出发,比如:事务的应用、统一日志、分布式框架中的追踪链埋点。
其它模块简述
Data Access/Integration
主要包括JDBC、ORM、OXM、JSM和Transaction模块,这些建议后期自己分析学习Web
也就是我们熟悉的Spring MVC
总结
Spring主要还是IOC
和AOP
两块,这两块通过不同的扩展点,让Spring框架做到了包罗万象,也是Spring生态圈蓬勃发展到现在的关键。
随着技术的发展,框架的使用越来越简单,但还是需要真正熟悉Spring源码,才能做到随心所欲的扩展(埋点),后续写通用工具类简化代码,避免反复的Ctrl+C
、Ctrl+V
。
后续我们通过阅读郝佳
的Spring源码深度解析
和工作中切实案例结合分析Spring中IOC
和AOP
两块源码。