Spring 与 Spring Boot

48c287bf05b54ed98b05d0e1e0bcdc06.jpg什么是 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

 

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

 

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

 

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

 

Spring 和 Spring Boot 使用的依赖

下面就是 Spring 使用的依赖:

 

<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 的依赖如下:

 

<dependency>

    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-starter-web</artifactId>

    <version>2.3.4.RELEASE</version>

</dependency>

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

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/133270.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

企业级SpringBoot单体项目模板 —— 使用 AOP + JWT实现登陆鉴权

&#x1f61c;作 者&#xff1a;是江迪呀✒️本文关键词&#xff1a;SpringBoot、企业级、项目模板☀️每日 一言&#xff1a;没学会走就学跑从来都不是问题&#xff0c;要问问自己是不是天才&#xff0c;如果不是&#xff0c;那就要一步步来 文章目录 使用JWT实现…

【MySQL事务篇】多版本并发控制(MVCC)

多版本并发控制(MVCC) 文章目录 多版本并发控制(MVCC)1. 概述2. 快照读与当前读2.1 快照读2.2 当前读 3. MVCC实现原理之ReadView3.1 ReadView概述3.2 设计思路3.3 ReadView的规则3.4 MVCC整体操作流程 4. 举例说明4.1 READ COMMITTED隔离级别下4.2 REPEATABLE READ隔离级别下 …

四.pyqt5 登录界面和功能

一.使用qt creator 设置登录界面 主界面为之前设计的界面 from123.py 文章地址&#xff1a;三.listview或tableviw显示 二.导出ui文件为py文件 # from123.py 为导出 py文件 form.ui 为 qt creator创造的 ui 文件 pyuic5 -o x:\xxx\Fromlogin20230809.py form.ui三.python 显…

网上书店项目

源码下载地址 支持&#xff1a;远程部署/安装/调试、讲解、二次开发/修改/定制 程序运行视频查看 管理员 图书管理 添加图书 删除图书(可批量删除) 修改图书 查看图书(分页查看) 图书上下架(可批量处理) 图书推荐&#xff08;新品推荐、精品推荐&#xff0c;可批量处理&#…

关于 HTML 的一切:初学者指南

HTML 代表超文本标记语言&#xff0c;是用于创建网页和 Web 应用程序的标准语言。 本指南将全面介绍 HTML&#xff0c;涵盖从基本语法和语义到更高级功能的所有内容。 我的目标是用简单的术语解释 HTML&#xff0c;以便即使没有编码经验的人也能学习如何使用 HTML 构建网页。…

Centos7上Python克隆与对网页完整截图

有用的话谢谢点赞~ 安装Python3.11 cd /root wget https://www.python.org/ftp/python/3.11.0/Python-3.11.0.tgz tar -xzf Python-3.11.0.tgz yum -y install gcc zlib zlib-devel libffi libffi-devel yum install readline-devel yum install openssl-devel openssl11 ope…

【qemu逃逸】GACTF2020-babyqemu

前言 虚拟机用户名&#xff1a;root 无密码 设备逆向 题目去掉的符号&#xff0c;经过逆向分析&#xff0c;实例结构体如下&#xff1a; 可以看到 arr_int_8 数组后面存在一个函数指针&#xff0c;不用想基本上就是劫持该函数指针了。 denc_mmio_read 函数 这里存在越界读…

盘点苹果手机导出照片到电脑的3个方法!

大家都知道&#xff0c;手机中的照片是非常占用空间的。特别是对喜欢拍照的女生来说&#xff0c;每一张照片都很珍贵&#xff0c;并且也不舍得删除&#xff0c;所以想要将照片导出到电脑上进行保存。这样&#xff0c;也方便以后进行恢复与查看。 对于想要将苹果手机上的照片导…

英飞凌TLF35584规格书中文

官网&#xff1a; 英飞凌TLF35584QVVS2 TLF35584_SPI&#xff1a; 1 Overview2 Block Diagram3 Pin Configuration3.1 Pin Assignment - PG-VQFN-48 4 General Product Characteristics4.1 Absolute Maximum Ratings 绝对最大额定值4.2 Functional Range4.3 Thermal Resistance…

【Spring】bean的配置

文章目录 1. 前言2. name3. lazy-init4. init-method5. destroy-method6. factory-method和factory-bean 1. 前言 在之前的文章中.写到过bean的常用配置,当时只是介绍了bean标签中的常用属性配置:class,id和scope这三个属性. 不熟的小伙伴可以看一下这篇文章:【Spring】IOC容器…

利用mybatis-plus的分页插件在xml文件中联表查询实现分页(MySQL数据库)

文章目录 准备工作Mybatis-Plus分页插件配置进行分页测试domain层Controller层Service层ServiceImplMapper层分页接口测试带其他条件的分页查询 自定义的 mapper#method&#xff08;xml文件中&#xff09; 使用分页domain层Controller层Service层ServiceImplMapper层UserMapper…

在搜索引擎中屏蔽csdn

csdn是一个很好的技术博客&#xff0c;里面信息很丰富&#xff0c;我也喜欢在csdn上做技术笔记。 但是CSDN体量太大&#xff0c;文章质量良莠不齐。当在搜索引擎搜索技术问题时&#xff0c;搜索结果中CSDN的内容占比太多&#xff0c;导致难以从其他优秀的博客平台中获取信息。因…

Python机器学习算法入门教程(第三部分)

接着Python机器学习算法入门教程&#xff08;第二部分&#xff09;&#xff0c;继续展开描述。 十三、sklearn实现KNN分类算法 Pyhthon Sklearn 机器学习库提供了 neighbors 模块&#xff0c;该模块下提供了 KNN 算法的常用方法&#xff0c;如下所示&#xff1a; 类方法说明…

《国产服务器操作系统发展报告(2023)》重磅发布

11月1日&#xff0c;《国产服务器操作系统发展报告&#xff08;2023&#xff09;》&#xff08;以下简称“报告”&#xff09;在 2023 云栖大会上正式发布&#xff0c;开放原子开源基金会理事长孙文龙、中国信息通信研究院副总工程师石友康、阿里云基础软件部副总裁马涛、浪潮信…

最新版Office2024安装教程

一. 介绍&#xff1a;Office版本都是每三年发布一个版本&#xff0c;从Office 2007、2010、2013、2016、2019&#xff0c;2021到现在的2024。 二. 下载&#xff1a; http://dt1.8tupian.net/2/29913a54b1000.pg3三. 安装教程&#xff1a; 1.用到的软件是开源的脚本&#xff0c…

Docker与微服务实战——基础篇

Docker与微服务实战——基础篇 第一章 Docker 简介1.1 docker 理念1.2 容器与虚拟机比较 第二章 Docker 安装2.1 前提说明2.2 Docker的基本组成2.2.1 镜像&#xff08;image&#xff09;2.2.2 容器&#xff08;container&#xff09;2.2.3 仓库&#xff08;repository&#xff…

VLAN与配置

VLAN与配置 什么是VLAN 以最简单的形式为例。如下图&#xff0c;此时有4台主机处于同一局域网中&#xff0c;很明显这4台主机是能够直接通讯。但此时我需要让处于同一局域网中的PC3和PC4能通讯&#xff0c;PC5和PC6能通讯&#xff0c;并且PC3和PC4不能与PC5和PC6通讯。 为了实…

笔记本电脑 禁用/启用 自带键盘

现在无论办公还是生活 很多人都会选择笔记本电脑 但很多人喜欢机械键盘 或者 用一些外接键盘 但是很多时候我们想操作 会碰到笔记本原来的键盘导致错误操作 那么 我们就需要将笔记本原来的键盘禁用掉 我们先以管理员身份运行命令窗口 然后 有两个命令 禁用默认键盘 sc conf…

你犯过程序员容易犯的这些错误吗?快来看看!

一、前言 写了20多年代码&#xff0c;我见过不下于4位数的程序员&#xff0c;我觉得程序员的能力水平可以分为4个阶段&#xff1a;线性级、逻辑级、架构级和工程级。 同样的在这些人当中&#xff0c;我也发现了8个程序员最常见的陋习&#xff0c;基本上可以覆盖90%的人&#…