当前位置: 首页 > news >正文

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。

 

相关文章:

Spring 与 Spring Boot

什么是 Spring 可以理解 Spring 是一个框架。这个框架最早来源于在差不多的 20 年前的 2002 年。 在那个时候 Java 世界的开发还是以 EJB 为主&#xff0c;因为在这之前的大部分应用都会使用服务器客户端的应用模式。 其实这个模式在现在还是在使用的&#xff0c;例如 IBM 系统…...

Flutter 04 按钮Button和事件处理、弹框Dialog、Toast

一、按钮组件 1、按钮类型&#xff1a; 2、按钮实现效果&#xff1a; import package:flutter/material.dart;void main() {runApp(const MyApp()); }class MyApp extends StatelessWidget {const MyApp({Key? key}) : super(key: key);overrideWidget build(BuildContext co…...

thinkphp6多用用模式下缩短路由隐藏index应用名

thinkphp6多用用模式下缩短路由隐藏index应用名方法&#xff1a; 找到入口文件&#xff0c;一般public目录下index.php 找到 $response $http->run(); 替换为如下代码即可 // 关键在此处 $_amain index; $_aother admin|common; // 匹配此条件&#xff0c;就按照tp默…...

AM@二阶常系数非齐次线性微分方程@待定系数法可解决的经典类型1

文章目录 abstract二阶常系数非齐次线性微分方程待定系数法可解类型类型1小结例 abstract 二阶常系数非齐次线性微分方程待定系数法可解决的经典类型1及其解法总结与应用 本文给出类型1为什么可以通过待定求出特解,并且待定函数要设成什么形式推理过程有一定工作量,而在应用中…...

大数据技术笔记

1. 大数据技术简介 大数据技术是一系列的工具和方法&#xff0c;它们可以帮助我们收集、存储和分析大量的数据&#xff0c;并将结果呈现给我们。 2. 大数据计算模式 我们需要一些方法来处理这些数据&#xff0c;就像我们需要各种各样的厨具来处理食材一样。这些方法被称为大…...

Vue 3 中的 Composition API

✨理解 Vue 3 中的 Composition API &#x1f383; Vue 3 引入了全新的 Composition API&#xff0c;相较于传统的 Options API&#xff0c;它具备许多优势和适用场景。下面将介绍 Composition API 的优势和使用场景&#xff0c;并为你带来更好的开发体验。 &#x1f381; Co…...

《TCP/IP详解 卷一:协议》第5章的IPv4数据报的总长度字段出现“不需要大于576字节的IPv4数据报“相关内容的解释

《TCP/IP详解 卷一&#xff1a;协议》第5章的IPv4数据报的总长度字段的一些解释&#xff0c;出现以下内容&#xff08;有省略&#xff09;&#xff1a; ....另外&#xff0c;主机不需要接收大于576字节的IPv4数据报.....以避免576字节的IPv4限制。 英文原文的内容&#xff08;有…...

PO-java客户端连接错误can not connect to server

问题描述&#xff1a; 换电脑或者网络环境改变了&#xff0c;PO下载EST ID的jnlp提示can not connect to server*** &#xff1b;**message server***这类错误 原因分析&#xff1a; 基本上都是PO消息服务器连接不上导致的错误&#xff0c;原理有均衡负载对应的IP转接后端口不…...

PM2 vs Kubernetes:在部署 Node.js 服务时使用哪个?

Node.js 已成为 Web 开发中的热门技术之一&#xff0c;但如果我们想成功地将 Node.js 应用程序交付给用户&#xff0c;我们需要考虑部署和管理这些应用程序。两个常见的选项是 PM2 和 Kubernetes。PM2 是一个用于运行和管理 Node.js 应用程序的进程管理器&#xff0c;它能够创建…...

配置git并把本地项目连接github

一.配置git 1.下载git&#xff08;Git&#xff09;&#xff0c;但推荐使用国内镜像下载&#xff08;CNPM Binaries Mirror&#xff09; 选好64和版本号下载&#xff0c;全部点下一步 下载完成后打开终端&#xff0c;输入 git --version 出现版本号则说明安装成功 然后继续…...

pytorch笔记 GRUCELL

1 介绍 GRU的一个单元 2 基本使用方法 torch.nn.GRUCell(input_size, hidden_size, biasTrue, deviceNone, dtypeNone) 输入&#xff1a;&#xff08;batch&#xff0c;input_size&#xff09; 输出和隐藏层&#xff1a;&#xff08;batch&#xff0c;hidden_size&#xf…...

不解压,也能列出文件信息

gz文件&#xff0c;不解压&#xff0c;查看压缩前文件的大小&#xff1a; gzip -l ~$ ll -rw-r--r-- 1 fee fee 17343450 Nov 2 12:02 xxx.log.2023-11-02T04-02-56.000.1 -rw-r--r-- 1 fee fee 3150599 Nov 2 12:02 xxx.log.2023-11-02T04-02-56.000.1.gz ~$ gzip -l gb…...

微型计算机组成原理

1、微型计算机组成 一个传统微型计算机硬件组成如下图 CPU通过地址线、数据线和控制信号线组成的本地总线&#xff08;内部总线&#xff09;与系统其他部分进行数据通信。 地址线用于提供内存或I/O设备的地址&#xff0c;即指明需要读/写数据的具体位置&#xff1b;数据线用…...

基站/手机是怎么知道信道情况的?

在无线通信系统中&#xff0c;信道的情况对信号的发送起到至关重要的作用&#xff0c;基站和手机根据信道的情况选择合适的资源配置和发送方式进行通信&#xff0c;那么基站或者手机是怎么知道信道的情况呢&#xff1f; 我们先来看生活中的一个例子&#xff0c;从A地发货到B地…...

进程/线程

进程是资源单位, 线程是执行单位。 每一个进程至少要有一个线程&#xff0c;启动每一个程序默认都会有一个主线程 1.多线程的两种实现 from threading import Thread#方法一 def func(name):for i in range(10):print(name, i)if __name__ __main__:t Thread(targetfunc, …...

Python 应用 之 转换音频格式

目录 一、python音频转换 1、pydub 音频包安装 2、 ffmpeg安装 1&#xff09;、解压后&#xff0c;添加到环境变量中 2&#xff09;、可以直接放在python安装目录下 3、python程序 1&#xff09;、引入相关包 2&#xff09;、重命名 3&#xff09;、to Mp3 4&#xf…...

Oracle JDK 和OpenJDK两者有什么异同点

Oracle JDK 和 OpenJDK 是两种不同版本的 Java Development Kit&#xff08;Java 开发工具包&#xff09;&#xff0c;它们都提供了用于开发 Java 程序的一系列工具和库。以下是它们之间的一些主要异同点&#xff1a; 相同点&#xff1a; 功能&#xff1a;在大多数情况下&…...

GPT引发智能AI时代潮流

最近GPT概念爆火&#xff0c;许多行业开始竞相发展AI &#xff0c;工作就业也将面临跳转&#xff0c;目前测试就业形势就分为了两大类&#xff0c;一类是测试行业如功能、性能、自动化综合性人才就业技能需求&#xff0c;另一类便是AI测试行业的需求普遍增长&#xff0c;原本由…...

FreeSWITCH mrcp-v2小记

最近得知有人受mrcp的困扰&#xff0c;于是写了这篇小文&#xff0c;希望能有所帮助 FreeSWITCH版本选择 目前当然选择1.10.10&#xff0c;不建议老版本&#xff0c;差别在于老版本用到的libmrcp比较旧&#xff0c;是1.2版本&#xff0c;bug比较多&#xff0c;有时会crash&am…...

如何将你的PC电脑数据迁移到Mac电脑?使用“迁移助理”从 PC 传输到 Mac的具体操作教程

有的小伙伴因为某一项工作或者其它原因由Windows电脑换成了Mac电脑&#xff0c;但是数据和文件都在原先的Windows电脑上&#xff0c;不知道怎么传输。接下来小编就为大家介绍使用“迁移助理”将你的通讯录、日历、电子邮件帐户等内容从 Windows PC 传输到 Mac 上的相应位置。 在…...

【WiFi帧结构】

文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成&#xff1a;MAC头部frame bodyFCS&#xff0c;其中MAC是固定格式的&#xff0c;frame body是可变长度。 MAC头部有frame control&#xff0c;duration&#xff0c;address1&#xff0c;address2&#xff0c;addre…...

在rocky linux 9.5上在线安装 docker

前面是指南&#xff0c;后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat&#xff08;I/O Statistics&#xff09;是Linux系统下用于监视系统输入输出设备和CPU使…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命

在华东塑料包装行业面临限塑令深度调整的背景下&#xff0c;江苏艾立泰以一场跨国资源接力的创新实践&#xff0c;重新定义了绿色供应链的边界。 跨国回收网络&#xff1a;废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点&#xff0c;将海外废弃包装箱通过标准…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

汇编常见指令

汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX&#xff08;不访问内存&#xff09;XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...

IT供电系统绝缘监测及故障定位解决方案

随着新能源的快速发展&#xff0c;光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域&#xff0c;IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选&#xff0c;但在长期运行中&#xff0c;例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...

Device Mapper 机制

Device Mapper 机制详解 Device Mapper&#xff08;简称 DM&#xff09;是 Linux 内核中的一套通用块设备映射框架&#xff0c;为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程&#xff0c;并配以详细的…...

算法岗面试经验分享-大模型篇

文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer &#xff08;1&#xff09;资源 论文&a…...

深度学习水论文:mamba+图像增强

&#x1f9c0;当前视觉领域对高效长序列建模需求激增&#xff0c;对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模&#xff0c;以及动态计算优势&#xff0c;在图像质量提升和细节恢复方面有难以替代的作用。 &#x1f9c0;因此短时间内&#xff0c;就有不…...