黑豹程序员-架构师学习路线图-百科:SpringBoot

news2025/1/13 13:29:11

文章目录

  • 1、什么是SpringBoot?
  • 2、SpringBoot发展史
  • 3、为什么我们要使用SpringBoot

1、什么是SpringBoot?

Spring Boot是一个用于创建独立的、基于Spring框架的Java应用程序的开源框架。
Spring Boot简化了Spring应用程序的开发和部署,使开发人员能够更专注于业务逻辑的实现,而不必过多关注底层的配置和细节。

2、SpringBoot发展史

悉尼大学的音乐学博士!不要惊讶,不是计算机!
也许就是因为这样一颗理性思维与艺术细胞结合的大佬,才能造就Spring这样的产物吧。
在这里插入图片描述

2003年Rod Johnson成立Interface公司,产品是SpringFramework
2004年,Spring框架开源,公司改名为Spring Source
2008年,收购Apache Servlet、Tomcat,为SpringBoot内嵌Web容器奠定基础,整个生态自己掌握
2009年,公司被VMWare以4.6亿美金收购
被收购后,Spring公司接连收购了很多优秀的开源中间件,比如RabbitMQ、Redis
2013年,VMWare、EMC、通用电气三者联合成立Pivotal公司,从这开始,Spring开始一路暴走
2014年,推出SpringBoot1.0,基于Spring4.0开发
2015年,推出SpringCloud
2018年,Pivotal公司上市
2018年3月,SpringBoot2.0发布,基于Spring5.0开发

3、为什么我们要使用SpringBoot

没有SpringBoot我们是怎么构建项目的?

构建项目第一代方式:
创建java项目或者javaWeb项目都是我们需要自己去搜集或者从其他小伙伴处复制jar到工程中,然后引入才可以使用。

构建项目第二代方式:
Maven出现后我们的方式就有了极大的变化了,不再是创建java工程或者javaWeb工程,而是创建Maven项目。
Maven通过pom.xml文件中我们声明的依赖dependency中的坐标,去我们配置的中央仓库(远程、国外)或者阿里镜像仓库(国内)把各大公司在其中央仓库上传的jar包最终下载到本地仓库。
这样我们项目使用jar时,不在是从自己复制到项目中的jar,而是根据pom.xml中配置的jar的坐标,去本地仓库对应路径下找寻jar包。

显然第二代的方式比第一代方式优秀,所以很快我们构建项目就都是有Maven了。
但随着Maven项目的庞大,依赖的jar很多,新的问题又出现了,就是jar包冲突问题。
曾经我们改造项目为Dubbo时,那个冲突啊漫天飞,就未来解决其冲突,周六早上爬起来就开始整,到周六深夜直接整奔溃了,周日又重头构建,那个黑暗的日子我可不愿再来一次。

构建项目第三代方式:
14年曙光来了,SpringBoot诞生了。它一经推出立刻被热捧,为何呢,就是它解决了上述的问题。构建大型项目时,特别轻松了,不在怕多项技术加入后jar冲突的混乱了。

那它是如何解决的呢?奥秘在哪里呢,其实没有好方法,它只不过把我们自己构建过程,让SpringBoot官方的程序员去做了。
有人问你怎么知道的?

我们从它提供的构建网站,选择需要依赖的技术 Lombo,Web(SpringMVC),MySQL Driver,MyBatis等
可以从生成的pom.xml看出好像和我们的Maven相同啊,不是它有一个最大的不同,就是它直接依赖了一个父工程,
而这个父工程就是奥秘所在,它是SpringBoot自己出的,而其中它已经把困扰我们的冲突解决了。

org.springframework.boot spring-boot-starter-parent 2.7.16

这下大家知道了吧,这就是我们为何已经不用Maven工程的方式而全都使用SpringBoot来构建工程的根本原因了。
其实我们现在构建的所有项目都是SpringBoot的子项目。

https://start.spring.io/

在这里插入图片描述

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.7.16</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>cn.hb</groupId>
	<artifactId>hello</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>hello</name>
	<description>Demo project for Spring Boot</description>
	<properties>
		<java.version>1.8</java.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>2.3.1</version>
		</dependency>

		<dependency>
			<groupId>com.mysql</groupId>
			<artifactId>mysql-connector-j</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter-test</artifactId>
			<version>2.3.1</version>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<excludes>
						<exclude>
							<groupId>org.projectlombok</groupId>
							<artifactId>lombok</artifactId>
						</exclude>
					</excludes>
				</configuration>
			</plugin>
		</plugins>
	</build>

</project>

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

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

相关文章

Java linux 部署命令

Java linux 部署命令 参考&#xff1a; nohup java -jar -Dspring.profiles.activetest businessIntegration-v2.0.0.jar & cd /var/www/datasync/backend/test 上传jar包 businessintegrationdatasynctask-v1.0.0.jar nohup java -jar -Dspring.profiles.activetest…

分位数损失和分位数回归

分位数损失和分位数回归 了解如何调整回归算法来预测数据的任何分位数 维亚切斯拉夫埃菲莫夫 跟随 出版于 走向数据科学 6 分钟阅读 1月29日 65 1 一、说明 右退出是一项机器学习任务&#xff0c;其目标是根据一组特征向量预测真实值。存在多种回归算法&#xff1a;线性回归…

(2023|AAAI,MS-VQGAN,分层扩散,PyU-Net,粗到细调制)Frido:用于复杂场景图像合成的特征金字塔扩散

Frido: Feature Pyramid Diffusion for Complex Scene Image Synthesis 公众号&#xff1a;EDPJ&#xff08;添加 VX&#xff1a;CV_EDPJ 或直接进 Q 交流群&#xff1a;922230617 获取资料&#xff09; 目录 0. 摘要 1. 简介 2. 基础 3. 方法 3.1 学习多尺度感知潜在 …

Blizzard Battle 上使用代理

要在 Blizzard Battle 上使用代理设置&#xff0c;首先需要确保您已经安装了 Blizzard 游戏客户端。下面是一个详细的教程&#xff0c;将带您完成代理设置&#xff1a; 打开 Blizzard 游戏客户端。 在顶部菜单栏中&#xff0c;点击“设置”&#xff08;即齿轮图标&#xff09;…

远程开户身份证识别OCR技术:革新传统流程,实现高效身份验证

远程开户是指通过互联网或其他远程通信方式&#xff0c;不需要亲自前往银行、证券公司或其他金融机构的实体营业网点&#xff0c;即可完成开立账户和办理相关服务的过程。 相比传统柜台开户方式&#xff0c;远程开户具有更高的便利性和灵活性。它使得用户可以随时随地通过网络…

Linux权限基础知识

前言&#xff1a;作者也是初学Linux&#xff0c;可能总结的还不是很到位 Linux修炼功法&#xff1a;初阶功法 ♈️今日夜电波&#xff1a;修炼爱情 —林俊杰 0:30━━━━━━️&#x1f49f;──────── 4:47 …

CUDA编程入门系列(二) GPU硬件架构综述

一、Fermi GPU Fermi GPU如下图所示&#xff0c;由16个SM&#xff08;stream multiprocessor&#xff09;组成&#xff0c;不同的SM之间通过L2 Cache和全局内存进行相连。整个架构大致分为两个层次&#xff0c;①总体架构由多个SM组成 ②每个SM由多个SP core&#xff08;stream…

从零开始的C语言学习第二十课:数据在内存中的存储

目录 1. 整数在内存中的存储 2. 大小端字节序和字节序判断 2.1 什么是大小端&#xff1f; 2.2 为什么有大小端? 3. 浮点数在内存中的存储 3.1 浮点数存的过程 3.2 浮点数取的过程 1. 整数在内存中的存储 在讲解操作符的时候&#xff0c;我们就讲过了下⾯的内容&#x…

Day3力扣打卡

打卡记录 改变一个整数能得到的最大差值&#xff08;贪心&#xff09; 链接 得到最大的整数&#xff0c;找到一个高位将它修改为 9。同理&#xff0c;想要得到最小的整数&#xff0c;找到一个高位将它修改为 0。 class Solution { public:int maxDiff(int num) {auto replace …

国内首家,极越展示纯视觉城市NOA,正面对决特斯拉FSD

作者 | 德新 编辑 | 王博 10月17日&#xff0c;极越宣布其基于纯视觉的高阶智驾方案&#xff0c;已在上海核心城区跑通城市领航辅助功能&#xff0c;同时官方还首次公布了与百度联合开发的Occupancy占用格栅网络技术。 基于对极越一贯的判断&#xff0c;我们认为&#xff0c;…

一些经典的神经网络(第17天)

1. 经典神经网络LeNet LeNet是早期成功的神经网络&#xff1b; 先使用卷积层来学习图片空间信息 然后使用全连接层来转到到类别空间 【通过在卷积层后加入激活函数&#xff0c;可以引入非线性、增加模型的表达能力、增强稀疏性和解决梯度消失等问题&#xff0c;从而提高卷积…

集成学习方法(随机森林和AdaBoost)

释义 集成学习很好的避免了单一学习模型带来的过拟合问题 根据个体学习器的生成方式&#xff0c;目前的集成学习方法大致可分为两大类&#xff1a; Bagging(个体学习器间不存在强依赖关系、可同时生成的并行化方法) 流行版本&#xff1a;随机森林(random forest)Boosting(个体…

8.strtok函数

#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h>int main() {/*----------------------函数解析----------------------*//*函数原型&#xff1a;char* strtok(char* str, char const* sep)*//*函数入参&#xff1a;第一个参数是要分割的…

Layui 主窗口调用 iframe 弹出框模块,获取控件的相应值

var iframeWindow window[layui-layer-iframe index]; iframeWindow.layui.tree............(这里就可以操作tree里面的内容了)。var chrild layero.find(iframe).contents(); chrild.layui.tree (这样是调用不到的)。var child layer.getChildFrame(); child.layui.tree(这…

Linux常见指令及热键

文章目录 1. ls 指令语法实例 2. pwd 指令语法实例 3. cd 指令语法实例 4. touch 指令语法实例 5. mkdir语法实例 6. rmdir 指令语法实例 7. rm 指令语法实例 8. man 指令语法实例 9. cp 指令语法实例 10. mv 指令语法实例 11. cat 指令使用权限语法格式参数说明&#xff1a;实…

【Java系列】Java 简介

目录 Java 简介主要特性发展历史Java 开发工具系列文章版本记录 Java 简介 Java 是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 面向对象程序设计语言和 Java 平台的总称。由 James Gosling和同事们共同研发&#xff0c;并在 1995 年正式推出。 后来 Sun 公司被 Ora…

Android apkanalyzer简介

关于作者&#xff1a;CSDN内容合伙人、技术专家&#xff0c; 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 &#xff0c;擅长java后端、移动开发、商业变现、人工智能等&#xff0c;希望大家多多支持。 目录 一、导读二、概览三、用法3.1 使用 Android Studio3.1.1…

Arduino Nano 引脚复用分析

近期开发的项目为气体传感器采集仪&#xff0c;综合需求&#xff0c;选取NANO作为主控&#xff0c;附属设备有 oled、旋转编码器、H桥板、蠕动泵、开关、航插等&#xff0c;主要是用现有接口怎么合理配置实现功能。 不管stm32 还是 Arduino 都要看清引脚图 D2 D3 引脚是两个外…

abap中程序跳转(全)

1.常用 1.CALL TRANSACTION 1.CALL TRANSACTION ta WITH|WITHOUT AUTHORITY-CHECK [AND SKIP FIRST SCREEN]. 其中ta为事务码tcode使用时要打单引号() 2. CALL TRANSACTION ta WITH|WITHOUT AUTHORITY-CHECK USING bdc_tab { {[MODE mode] [UPDATE u…