Spring 与 Spring Boot

news2024/11/15 18:01:32

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.coloradmin.cn/o/1164059.html

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

相关文章

第一章 Python基础知识

文章目录 python介绍优点应用领域web框架学习小技巧 python安装linux运行第一个程序Windows 基础数据类型算术运算符变量与赋值操作符变量赋值操作符转义符 获取用户输入与注释获取用户注释 案例&#xff1a;简单计算器实现在这里插入图片描述 总结 python介绍 python是一种面…

博文总结:交叉熵损失函数与标签平滑

文章目录 基本概念交叉熵损失函数Pytorch代码实现参考文献 李宏毅机器学习2023作业04Self-attention、李宏毅机器学习2023作业03CNN和李宏毅机器学习2023作业02Classification都是分类问题&#xff0c;都涉及到了交叉熵损失函数以及起正则作用的标签平滑技巧&#xff0c;本次博…

项目实战:给首页上库存名称添加超链接然后带fid跳转到edit页面

1、提取公共方法common.js function $(key){if(key){if(key.startsWith("#")){key key.substring(1)return document.getElementById(key)}else{let nodeList document.getElementsByName(key)return Array.from(nodeList)}} } 2、 给库存名称添加超链接 2.1、inde…

Qt Creator创建新项目警告问题

这里可以看见如果你是一些高版本会出现各种警告&#xff0c;但是可以编译通过&#xff0c;这是ClangCodeModel模块导致 解决办法 help -> About Plugins..->C ->ClangCodeModel 帮助 -> 关于插件 -> c ->ClangCodeModel取消勾选 然后重启Qt即可

【Java初阶练习题】-- 循环+递归练习题

循环练习题02 打印X图形计算1/1-1/21/3-1/41/5 …… 1/99 - 1/100 的值输出一个整数的每一位如&#xff1a;123的每一位是3&#xff0c;2&#xff0c;1模拟登录使用方法求最大值求斐波那契数列的第n项。(迭代实现)求和的重载求最大值方法的重载递归求N阶乘递归求 1 2 3 ...…

Redis的安装及基本使用

⭐⭐ Redis专栏&#xff1a;Redis专栏 ⭐⭐ 个人主页&#xff1a;个人主页 目录 一.Redis的简介 ⭐ 拓展&#xff1a;NO-SQL数据库与SQL数据库 二.Redis的安装 2.1linux版安装 下载Redis Desktop 2.2 Windows安装 三.redis的基本使用 3.1 String 字符串类…

如何从嘉立创下单一个PCB打板(免费)

文章目录 设计PCB下单制作PCB领取优惠券 设计PCB 由于我刚接触PCB设计&#xff0c;并不会自己设计&#xff0c;因此直接选择了一个开源硬件平台中的一个项目进行下载&#xff0c;下载链接如下&#xff1a; ESP32管灯熊猫 - 嘉立创EDA开源硬件平台 (oshwhub.com) 根据其中的视…

jeecg-uniapp 转成小程序的过程 以及报错 uniapp点击事件

uniapp 点击事件 tap: 单击事件 confirm: 回车事件 blur:失去焦点事件 touchstart: 触摸开始事件 touchmove: 触摸移动事件。 touchend: 触摸结束事件。 longpress: 长按事件。 input: 输入框内容变化事件。 change: 表单元素值变化事件。 submit: 表单提交事件。 scroll: 滚动…

程序员有哪些规避风险的合法兼职渠道?

近期&#xff0c;承德程序员事件冲上热搜&#xff0c;这对许多程序员的心灵是多么大的伤害啊&#xff01; 人人自危&#xff0c;大家开始顾虑自己接私活、找兼职的方式和前景了。毕竟&#xff0c;谁也不想”辛辛苦苦几十年&#xff0c;一把回到解放前“。那有什么办法既可以接私…

【自动控制原理】数学模型:系统框图及其化简、控制系统传递函数

文章目录 第2章 数学模型2.1 控制系统的运动微分方程2.2 拉氏变换和反变换2.3 传递函数2.4 系统框图2.4.1 系统框图2.4.2 系统框图的简化2.4.3 梅森公式2.4.4 例题答案解析——梅森公式 2.5 控制系统传递函数2.5.1 闭环系统的开环传递函数2.5.2 参考输入R(s)作用下的闭环传递函…

ONNX的结构与转换

ONNX的结构与转换 1. 背景2. ONNX结构分析与修改工具2.1. ONNX结构分析2.2. ONNX的兼容性问题2.3. 修改ONNX模型 3. 各大深度学习框架如何转换到ONNX&#xff1f;3.1. MXNet转换ONNX3.2. TensorFlow模型转ONNX3.3. PyTorch模型转ONNX3.4. PaddlePaddle模型转ONNX3.4.1. 简介3.4…

zabbix6.4监控centos

1、关闭防火墙 setenforce 0 #关闭SELinux sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config #设置永久关闭SELinux systemctl stop firewalld.service #关闭防火墙 systemctl disable firewalld.service …

nodejs express vue 点餐外卖系统源码

开发环境及工具&#xff1a; nodejs&#xff0c;vscode&#xff08;webstorm&#xff09;&#xff0c;大于mysql5.5 技术说明&#xff1a; nodejs express vue elementui 功能介绍&#xff1a; 用户端&#xff1a; 登录注册 首页显示搜索菜品&#xff0c;轮播图&#xf…

DNS 域名解析协议

作用 将域名转化位IP地址 域名 用’ . ’ 隔开的字符串&#xff0c;如&#xff1a;www.badu.com,就是为了赋予IP特殊含义。 一级域名 .com &#xff1a;公用 .cn&#xff1a;中国 .gov&#xff1a;政府 .us&#xff1a;美国 .org&#xff1a;组织 .net&#xff1a;网站 对应一级…

MATLAB和S7-1200PLC OPC通信(激活S7-1200PLC OPC UA服务器)

MATLAB和SMART PLC OPC通信请参考下面文章博客: MATLAB和西门子SMART PLC OPC通信-CSDN博客文章浏览阅读123次。西门子S7-200SMART PLC OPC软件的下载和使用,请查看下面文章Smart 200PLC PC Access SMART OPC通信_基于pc access smart的opc通信_RXXW_Dor的博客-CSDN博客OPC是…

【算法挨揍日记】day18——746. 使用最小花费爬楼梯、91. 解码方法

746. 使用最小花费爬楼梯 746. 使用最小花费爬楼梯 题目描述: 给你一个整数数组 cost &#xff0c;其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用&#xff0c;即可选择向上爬一个或者两个台阶。 你可以选择从下标为 0 或下标为 1 的台阶开始爬…

进程优先级(nice值,top指令),独立性,竞争性,进程切换(时间片),抢占与出让,并发并行概念

目录 优先级 引入 为什么会存在优先级 特点 优先级值 nice值 更改nice值 top指令 独立性 竞争性 进程切换 引入 时间片 上下文切换 调度器 抢占与出让 强占 出让 并发和并行 并发 并行 优先级 引入 与权限不同的是,权限是能不能做的问题,优先级是什…

有谁知道怎么下载微信视频号视频吗?

抖音视频下载、某站视频下载都很常见&#xff0c;那你知道怎么下载V信视频号视频吗/今天给大家分享两种简单方便的办法&#xff0c;继续往下看吧&#xff01;一、犀牛视频下载机器人犀牛视频下载器可以直接解析并下载视频号短视频。您只需转发视频到机器人即可下载。此方法也是…

Redis安装-常用命令及操作

目录 一.Redis简介 二.redis安装 1.1安装Linux版本 1.2安装 windows版本 三.redis的常用命令 Redis哈希(Hash) 一.Redis简介 Redis是一个开源&#xff08;BSD许可&#xff09;&#xff0c;内存存储的数据结构服务器&#xff0c;可用作数据库&#xff0c;高速缓存和消息队…

LLMs之RAG之IncarnaMind:IncarnaMind的简介(提高RAG召回率的两个优化技巧=滑块遍历反向查找+独立查询)、安装、使用方法之详细攻略

LLMs之RAG之IncarnaMind&#xff1a;IncarnaMind的简介(提高RAG召回率的两个优化技巧滑块遍历反向查找独立查询)、安装、使用方法之详细攻略 导读&#xff1a;在IncarnaMind项目中&#xff0c;提出了几个优化技巧&#xff0c;是非常值得我们在优化RAG系统的时候&#xff0c;进行…