Spring在不同的语境下有着不同的含义,我们打开Spring的官网(spring.io),他的首页介绍了Spring生态的重要组成部分,我们一个一个来看:
- Spring Framework 5
- Spring Boot
- Spring Cloud
- Spring Cloud Data Flow
Spring Framework即Spring框架,最早的版本在03年的时候发布(来源),目的是为了简化J2EE(后来改名为Java EE,后来又改成Jarkata EE)开发的复杂性。你可能认为Spring框架和Java EE是竞争者的关系,实际上Spring框架遵从了Java EE的部分规范,比如Servlet API、Bean Validation和JPA等。算是取其精华,弃之糟粕。
Spring框架由多个模块儿组成,有管Web的,有管数据库相关的,还有最重要的核心容器,这个之后我会着重讲解,让你理解IoC,AOP那一套东西。所有模块都有统一的版本号,比如Spring框架现在的最新版本是5.1.7那么每个模块儿都有5.1.7版本。如果你想要用Spring框架搭建一个网站,是完全可以的,只不过需要经过一番配置,这个过程说难也不难,说简单也也不简单。你肯定听到过有人抱怨Spring一堆xml配置纷繁复杂,不过那都是老黄历了,现在你可以直接使用Java代码来进行配置,非常直观。从Spring Boot诞生之后,“配置”这个东西,有了更进一步的简化。
Spring Boot可以帮你快速搭建并运行Spring应用,他直接把你以前需要手动配置的东西,按照常用的约定配置好,如果默认配置不能满足你的需求,可以在统一的配置文件中进行自定义。这种做法无疑降低了新手入门的门槛。Spring Boot可以让你的应用通过java -jar app.jar
的方式运行,部署起来更为方便。
Spring Cloud基于Spring Boot,它为分布式系统中常见的应用场景提供了解决方案,开发者省的去自己开发这些基础设施了。如果你找过相关的资料,那你一定听说过这些名词:服务发现和注册、负载均衡、配置中心、熔断机制等等,有了Spring Cloud,这些功能开箱即用。
Spring Cloud Data Flow的相关资料会少一点,我寻找了半天,可能是因为段位不够,没能完全搞清楚他。我希望能找到一篇文章,能说明白它的使用场景,数据从哪里产生,怎么收集,怎么处理,怎么展示等等。
除了上面提到的四个项目,Spring家族还有很多项目被广泛应用:
- Spring Data 提供了对各种各样数据库的支持,包括关系型和非关系型的,集中式和分布式的,云端的和本地的等等
- Spring Security 强大并且高度可定制化的认证与授权框架
- Spring Session 集群的session共享方案,可以与HttpSession无缝集成,支持的存储方式也是多种多样
- 还有十几个
Spring全家桶目前由Pivotal公司主导,可以理解为Spring为后者的一个产品,Pivotal由VMware和EMC联合成立,其发展历程可以看看这里。Spring经过十几年的发展,已经建立起了强大而丰富的生态,如果你搞Java Web开发,肯定免不了和它打交道。如果你也打算学习,不妨订阅我的博客(fookwood.com)或者公众号(微信搜索“闷瓜蛋子”),我将会持续输出相关内容。
原文链接:fookwood.com/talking-abo…