我们在软件开发过程中经常使用各种编程框架,比如 Java 程序员比较熟悉的 Spring、MyBatis 等都是编程框架,事实上,Tomcat、Jetty 这类 Web 容器也可以归类为框架。框架的一个特点是:使用框架开发一个应用程序,开发者无需在程序中调用框架的代码,就可以使用框架的功能特性。我们开发程序不需要调用 Spring 的代码,就可以使用 Spring 的依赖注入、MVC 这些特性,开发出低耦合、高内聚的应用代码。我们的程序更不需要调用 Tomcat 的代码,就可以监听 HTTP 协议端口,处理 HTTP 请求。
这些框架我们每天都在使用,可能会觉得这样是理所当然的,但如果你停下来好好想一想,难道不觉得这很神奇吗?我们自己也写代码,你可以做到让其他工程师不调用我们写的代码就可以使用其功能特性吗?据我观察,大多数开发者是做不到的。那么 Spring、Tomcat 这些框架是如何做到的呢?
李智慧,极客时间《从 0 开始学大数据》专栏作者,同程艺龙交通首席架构师、Apache Spark 源代码贡献者,长期从事大数据、大型网站架构的研发工作。曾担任阿里巴巴技术专家、Intel 亚太研发中心架构师、宅米和 WiFi 万能钥匙 CTO。有超过 6 年的线下咨询和培训经验,并著有畅销书《大型网站技术架构:核心原理与案例分析》。
作者回复: 是的