前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring 和 Spring Boot

Spring 和 Spring Boot

原创
作者头像
HoneyMoose
修改2021-02-14 15:10:47
2.3K0
修改2021-02-14 15:10:47
举报
文章被收录于专栏:CWIKIUSCWIKIUS

很多在开始的时候可能对 Spring 和 Spring boot 之间的关系可能有些混淆,在开始的时候如果能够对这 2 个概念有所了解的话,能够对后面的使用起到一些帮助作用。

什么是 Spring

可以理解 Spring 是一个框架。这个框架最早来源于在差不多的 20 年前的 2002 年。

在那个时候 Java 世界的开发还是以 EJB 为主,因为在这之前的大部分应用都会使用服务器客户端的应用模式。

其实这个模式在现在还是在使用的,例如 IBM 系统上的 AS400。在这个开发模式的基础上,你需要为每一台计算机部署一个客户端,然后通过客户端连上服务器。

在当时网络环境不是非常发达的情况下,在局域网速度还不是非常普及和很快的情况下,大部分应用都会使用这种方式来进行开发。

当 Java 发布以后,一切都改变了。大家发现可以使用浏览器来做很多事情,而不再需要为每一个服务器去安装客户端版本,同时因为客户端版本不兼容又会导致很多问题。

很多公司都慢慢的尝试使用企业级的 Java 开发,这个也就是 EJB 的原形。但是,EJB 实在太过于臃肿了,很多公司在开发的过程中实在忍受不了 EJB 的各种弊端。

在这个时候有一本书《 Expert One-on-One J2EE Design and Development》发布了,这本书的作者 Rod Johnson 可以说是一个大神级的任务,开创性的创建了 Spring 框架。

51D67wYiL8L.SX401_BO1,204,203,200
51D67wYiL8L.SX401_BO1,204,203,200

在 Spring 框架发布以后,很多公司都会默认使用 Spring 的库,在当时还没有 Maven 的设计思路,所以很多项目都会拷贝 Spring 框架到 Lib 目录中。

随着时间的推移,Spring 在 Java 开发中几乎成了所有项目都会使用的一个 lib,在这个基础上,Spring 为了简化各种 Java 的开发,在使用 Spring 的框架基础上,继续进行扩展,形成一些小的项目,这就是我们现在看到的类似:

代码语言:javascript
复制
Spring JDBC
Spring MVC
Spring Security
Spring AOP
Spring ORM
Spring Test

可以将上面的小项目理解为一个一个的小模块,这些小模块的作用就是扩展 Spring 框架的功能。

根据你项目的需要,你只需要导入需要的模块即可,Spring 会帮你做一些基础的配置工作,能够让你更加专注业务,而不是框架本身。

什么是 Spring Boot

Spring Boot 也可以理解为是基于 Spring 框架的一个扩展模块,或者更多一点理解为扩展项目。

Spring Boot 存在的目的主要也是为了简化部署过程。随着容器,微服务,等概念的兴起,Java 项目在部署上面花费的时间越来越多。

在解释这个概念之前,我们可以看看传统的 Java Web 项目部署过程,在完成代码编译后,进行打包,通常我们会打包成 War 或者 Ear 的包。EAR 是 Weblogic 使用的,包中的内容就是编译好的源代码,需要的依赖,然后部署到容器中运行。

因为 Weblogic 和 Jboss 等是基于 EJB 标准的,所以部署和启动非常臃肿。这个时候一些聪明的孩子就将一些不需要的 EJB 内容丢弃了,然后开发了其他的一些轻量容器,例如 Tomcat,Jetty 等。

随着项目越做越大,这样部署还是比较麻烦。因此一些人又想,那么我是否可以将 Tomcat 也打包到 Jar 文件中,让 Java 直接运行 Jar。

因为不同服务器上的 Tomcat 版本也会存在有兼容性问题。

正是基于这个思路,我们就有了 Spring Boot。

Spring-Boot-Features
Spring-Boot-Features

你可以使用 Spring Boot 非常方便的开发一个 Web 项目。要知道在没有 Spring Boot 之前,就算要在 Web 页面上输出个 Hello World 都需要经过很多过程,有时候如果你使用了 JSP,还需要对 JSP 进行编译,非常慢也非常繁琐。

Spring 和 Spring Boot 使用的依赖

下面就是 Spring 使用的依赖:

代码语言:javascript
复制
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>5.2.9.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.2.9.RELEASE</version>
</dependency>

你可以在你的项目中,使用上面的依赖,然后打包后部署到 Tomcat 上面,你的项目也是同样可以运行的。

为了简化操作,你可以直接使用 Spring Boot 的依赖如下:

代码语言:javascript
复制
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <version>2.3.4.RELEASE</version>
</dependency>

然后你就可以直接打包成 JAR 来运行了,你不再需要在你的计算机上部署 Tomcat。

总结

一句话来说 Spring 就是一个框架,Spring Boot 是在这个框架上运行的一个扩展,主要为了解决敏捷开发和部署的问题。

Spring 框架是灵魂,没有 Spring 框架就没有 Spring Boot。

Spring 框架做了大部分的后台工作,现在项目为了快速上手,通常使用 Spring Boot 会更多一些,所以会看到对 Spring Boot 的讨论会更多。

https://www.ossez.com/t/spring-spring-boot/13306

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是 Spring
  • 什么是 Spring Boot
  • Spring 和 Spring Boot 使用的依赖
  • 总结
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档