“Don't Reinvent the Wheel”这句话,你从哪儿听来的?
这事还是发生在 16 年前。 在 Java EE 和 EJB 大行其道的时候,一个学音乐的小伙子公然吐槽 EJB 太过臃肿,绝大多数的 J2EE 应用根本不需要 EJB。 为了证明自己独特的想法,这位小伙子在当年出了一本书,在书中吐槽指出了 Java EE 和 EJB 组件框架中存在的一些主要缺陷,并提出了一个基于 Java 类和依赖注入的更简单的解决方案。 更有意思的是,书中展示了如何在不使用 EJB 的情况下构建高质量、可扩展的在线座位预留系统。 为了构建应用程序,他编写了超过 30,000 行的基础结构代码,项目中的根包命名为 com.interface21,所以人们最初称这套开源框架为 interface21。 在这本书发布后,一对一的 J2EE 设计和开发一炮而红。书中免费提供的大部分基础架构代码都是高度可重用的。 2003 年,这位小伙子和朋友在此框架的基础上开发了一个全新的框架命名为 Spring。 当时,据他们介绍 Spring 是传统 J2EE 新的开始,之后 Spring 发展进入快车道,在这十几年中,不断发展也不断红火起来。 2004 年 03 月,发布 Spring 1.0。 2006 年 10 月,发布 Spring 2.0。 2007 年 11 月,更名为 SpringSource,同时发布了 Spring 2.5。 2009 年 12 月,发布 Spring 3.0。 2013 年 12 月,发布 Spring 4.0。 2017 年 09 月,发布 Spring 5.0。 而这个小伙子就是 Rod Johnson ,他在 IT 界大展宏图之前,早已是一个拥有音乐学博士学位的跨界奇才。
Don''t Reinvent the Wheel 「不要重复造轮子」,这是 IT 圈的人经常听到的一句谚语,很多 Leader 常把这句话挂在嘴边。 最直接地理解是:有的项目或功能,别人已经做过了,我们需要用的时候,直接拿来用就可以,并不需要重新发明创造。 Rod Johnson 明确地告知我们, Spring 就是基于「Don''t Reinvent the Wheel」原则做起来的。 这也是吐槽 EJB 的关键点,于是 Spring 和这句谚语在全世界范围内逐渐火了起来。 Spring 是「配置地狱」? 多年以来,Spring 平台饱受非议的一点就是大量的 XML 配置以及复杂的依赖管理。 随着使用 Spring 进行开发的个人和企业越来越多,Spring 也慢慢从一个单一简洁的小框架变成一个大而全的开源软件。 Spring 的边界不断进行扩充,到了后来 Spring 几乎可以做任何事情,市面上主流的开源软件、中间件都有 Spring 对应组件支持,人们在享用 Spring 的便利之后,也遇到了一些问题。 Spring 每集成一个开源软件,就需要增加一些基础配置,随着开发项目的逐渐庞大,往往需要集成很多开源软件。 后期使用 Spring 开发大型项目需要引入很多配置文件,导致配置工作难以理解且出错率高,到了后来人们甚至称 Spring 为配置地狱。 在 2013 年的 SpringOne 2GX 会议上,Pivotal 的 CTO Adrian Colyer 回应了这些批评,并且特别提到该平台将来的目标之一就是实现免 XML 配置的开发体验。 这就是 Spring Boot 产生的原因之一,但 Spring Boot 所实现的功能超出了这个任务的描述,开发人员不仅不再需要编写 XML,而且在一些场景中甚至不需要编写繁琐的 import 语句。 在微服务的概念也慢慢兴起,快速开发微小独立的应用变得更为急迫,Spring 刚好处在这样一个交叉点上。 于 2013 年初启动了 Spring Boot 项目的研发。2014 年,Spring Boot 伴随着 Spring 4.0 诞生发布了第一个正式版本。 Spring Boot 并不是要成为 Spring 平台里面众多「Foundation」层项目的替代者。 Spring Boot 的目标不在于为已解决的问题域提供新的解决方案,而是为平台带来另一种开发体验,从而简化对这些已有技术的使用。 对于已经熟悉 Spring 生态系统的开发人员来说,Spring Boot 是一个很理想的选择。 对于采用 Spring 技术的新人来说,Spring Boot 提供一种更简洁的方式来使用这些技术。 简单才是编程之美 正是因为 Spring Boot 简化的配置和众多的 Starters 才让 Spring Boot 变得简单、易用、快速上手。 也可以说正是约定优于配置的思想彻底落地才让 Spring Boot 走向辉煌。 Spring Boot 约定优于配置的思想让 Spring Boot 项目非常容易上手,让编程变得更简单,其实编程本该很简单,简单才是编程的美。 约定优于配置(Convention Over Configuration),也称作按约定编程,是一种软件设计范式,旨在减少软件开发人员需做决定的数量、获得简单的好处,而又不失灵活性。 本质是说,开发人员仅需规定应用中不符约定的部分。例如,如果模型中有个名为 User 的类,那么数据库中对应的表就会默认命名为 user。 只有在偏离这一约定时,例如将该表命名为“user_info”,才需写有关这个名字的配置。 在 Spring 体系中,Spring Boot JPA 就是约定优于配置最佳实现之一。 不需要关注表结构,我们约定类名即是表名,属性名即是表的字段。 String 对应 varchar,long 对应 bigint,只有需要一些特殊要求的属性,我们再单独进行配置,按照这个约定我们可以将以前的工作大大简化。 Spring Boot 体系将约定优于配置的思想展现得淋漓尽致,小到配置文件、中间件的默认配置,大到内置容器、生态中的各种 Starters 无不遵循此设计规则。 Spring Boot 鼓励各软件组织方创建自己的 Starter,创建 Starter 的核心组件之一就是 autoconfigure 模块,也是 Starter 的核心功能,在启动的时候进行自动装配,属性默认化配置。 Spring、Spring Boot 和 Spring Cloud 的关系 Spring 最初核心的两大核心功能 Spring IoC 和 Spring Aop 成就了 Spring。 Spring 在这两大核心功能上不断地发展,才有了 Spring 事务、Spring MVC 等一系列伟大的产品。 最终成就了 Spring 帝国,到了后期 Spring 几乎可以解决企业开发中的所有问题。 Spring Boot 是在强大的 Spring 帝国生态基础上面发展而来,发明 Spring Boot 不是为了取代 Spring,是为了让人们更容易的使用 Spring。 所以说没有 Spring 强大的功能和生态,就不会有后期 Spring Boot 的火热。 Spring Boot 使用约定优于配置的理念,重新重构了 Spring 的使用,让 Spring 后续的发展更有生命力。 Spring 并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来。 通过 Spring Boot 风格进行再封装并屏蔽掉复杂的配置和实现原理,最终给开发者提供了一套简单易懂、易部署、易维护的分布式系统开发工具包。 Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的开发便利性巧妙地简化了分布式系统基础设施的开发。 服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用 Spring Boot 的开发风格做到一键启动和部署。 Spring Cloud 是为了解决微服务架构中服务治理而提供的具备一系列功能的开发框架,并且 Spring Cloud 是完全基于 Spring Boot 而开发。 Spring Cloud 利用 Spring Boot 特性整合了开源行业中优秀的组件,整体对外提供了一套在微服务架构中服务治理的解决方案。 综上我们可以这样来理解,正是由于 Spring IoC 和 Spring Aop 两个强大的功能才有了 Spring。 Spring 生态不断的发展才有了 Spring Boot,使用 Spring Boot 让 Spring 更易用更有生命力,Spring Cloud 是基于 Spring Boot 开发的一套微服务架构下的服务治理方案。 总结 Spring Boot 诞生一方面是因为 Spring 自身发展所遇到的问题,另一方面在微服务思想诞生之际,急需要一款快速开发工具来实现微服务技术落地,在这样的背景下诞生了 Spring Boot。 Spring Boot 整体的设计思想是:约定优于配置。依赖此设计思路,Spring Boot 进行了大刀阔斧的改革,让开发、测试、部署更为便捷。 众多的 Starters 成就了 Spring Boot 的发展,让使用 Spring Boot 开发项目变得更加简单。 延伸阅读: 该文章在 2018/9/13 10:20:45 编辑过 |
相关文章
正在查询... |