Spring 的核心特性

2020-12-30

Spring 框架现在已经是一个庞大的生态,在入门 Java 没多久我就尝试过读 Spring 的源码,按能抽出整块时间读源码去算的话,有 3 次;《Spring 源码深度解析》这本书也看了一遍多,但收获一般。

 

现在脑子里印象最深刻的就是

  • IOC 容器 XML 解析成 bean 那部分

  • AOP 切面的实现

  • Spring MVC 如何做到从 Http 请求通过 @Controller、@RequestMapping 注解找到对应的方法并返回视图或写出文本

 

我可以在 Spring Boot 上进行开发,但对配置的熟练度可能还不如一个初学者,但能很快上手,遇到各种问题能点进源码快速定位问题并解决;由于公司微服务框架是自研的,Spring Cloud 基本不会,借此机会把这块恶补一下。从官网可以看出,Spring 的功能远不止如此,还有 Spring Data、Spring for Android 等项目。

 

起点低,进步空间就巨大。而且,单就 Spring 全家桶来说,生态虽然庞大,但没有感觉有什么特别难的点。

 

Boot、Cloud 都是建立的 Framework 之上,Spring Framework 就是核心。

 

第一篇,列一下 Framework 的 Overview,后续将它们的重难点列出来各个击破,做成思维导图,有问题翻翻官方文档和源码基本就差不多了。

 

1、核心技术点(Core technologies)

  • IoC 容器(IoC Container)| 依赖注入(dependency injection)

  • 事件(Events)

  • 资源管理(Resources)

  • 国际化(i18n)

  • 校验(Validation)

  • 数据绑定(Data Binding)

  • 类型装换(Type Conversion)

  • 表达式(Spring Express Language)

  • 面向切面编程(AOP)

 

2、测试(Testing)

  • 模拟对象(mock Objects)

  • TestContext 框架(TestContext Framework)

  • Spring MVC 测试(Spring MVC Test)

  • Web 测试客户端(WebTestClient)

 

3、Data Access(数据存取)

  • 事务抽象(Transactions)

  • DAO 支持(DAO Support)

  • 对 JDBC 实现的封装与简化

  • O/R映射(O/R Mapping)

  • XML 编列(XML Marshalling)

 

3、Web

  • MVC

  • WebSocket

  • WebFlux

  • WebClient

 

4、技术整合(Integration)

  • 远程调用(remoting)

  • Java 消息服务(JMS)

  • Java 连接架构(JCA)

  • Java 管理扩展(JMX)

  • Java 邮件客户端(email)

  • 本地任务(tasks)

  • 本地调度(scheduling)

  • 缓存抽象(cache)

 

5、对其他语言的支持(Languages)

  • Kotlin

  • Groovy

  • dynamic languages

 


GitHub 上的模块

ConstXiong 备案号:苏ICP备16009629号-3