SpringBoot入门教程:从零基础到实战

创始人
2024-12-21 06:27:17
0 次浏览
0 评论

springboot教程菜鸟(springboot入门教程)

一位女同学想学习SpringBoot,于是连夜整理了最详细的SpringBoot入门教程笔记。

凭借其开箱即用的功能和免于繁琐配置的特点,SpringBoot已经开源。
这是每个Java开发人员必须学习的项目。
那么开发者如何快速上手SpringBoot呢?

那么SpringBoot到底是什么?SpringBoot是Spring框架的扩展和自动化,通过消除Spring所需的EXtensibleMarkupLanguage(XML)文件配置(如果您对XML配置感到满意,仍然可以使用它),使开发更快、更高效、更自动化。

微服务:每个功能元素最终都是一个可以独立替换和升级的软件单元。

在maven的settings.xml配置文件中的profile标签中添加如下配置:

将maven集成到idea中。

项目目录:

HelloWorldMainApplication:

HelloController:

执行结果:

打开浏览器访问。

1.假设您的pom.xml文件中有以下代码:

2.然后打包应用程序。

3.折叠即可看到spring-boot-01-helloworld-1.0-SNAPSHOT.jar。

4.将其复制到桌面(任何地方,个人选择),打开cmd窗口并切换到该位置。
我的jar包是desktop的,当我输入java-jarspring-boot-01-helloworld-1.0-SNAPSHOT.jar时,运行的效果是:

5.如果您打开浏览器并访问它,您还会看到HelloWord。

此部署非常简单。

朋友们,请帮我一键连接3次

顺便说一句,我在一线互联网公司工作了10多年,指导过很多后辈。
同一个领域。
帮助了很多人学习和成长。

我们意识到我们有很多经验和知识值得与大家分享,而且我们也可以用我们的技能和经验来解答你们学习Java的很多困惑,所以我们还是需要整理一下各种我坚持。
虽然工作很忙,但我还是会分享。
但由于知识传播渠道有限,很多程序员朋友无法获得合适的资料来提升学习。

因此,重要的Java进阶资料包括并发编程、JVM调优、SSM、设计模式、Spring等知识技能,集合了阿里巴巴面试题和常见源码分析等录制视频,免费分享。
如果需要请在评论区留言

从零开始学习SpringBoot:SpringBootWebSocket原理

前言:

在本节中,我们将了解WebSockets的原理。

1.Websocket和http

WebSocket是HTML5开发的协议,这意味着HTTP协议没有改变或者意义不大,但是HTTP不支持长连接。
(不包括长连接和循环连接)

首先HTTP有1.1和1.0,这些就是所谓的连接。
Keep-alive将多个HTTP请求合并为一个,但Websockets实际上是一种新协议,与HTTP协议基本无关。
这只是为了与现有浏览器握手规范兼容。
HTTP协议。
这种补充可以通过下图来理解:

有交集,但不是全部。

Html5也意味着一组新的API,即新规范、新技术。
Http协议本身只有1.0和1.1,与Html本身没有直接关系。
通俗地说,HTTP协议可以用来传输非HTML数据。

2.Websocket是什么协议,它的具体优点是什么?

首先,相对于HTTP等非持久性协议,Websocket是一种持久性协议。

HTTP的生命周期是由请求定义的:一次请求,一次响应。
在HTTP1.0中,这个HTTP请求结束。

HTTP1.1已得到改进以支持连接维护。
这意味着您可以在一个HTTP连接中发送多个请求并接收多个响应。
但是,请记住,HTTP中总是存在Request=Response的情况,因此一个请求只能有一个响应。
而且,这种反应也是被动的,无法主动发起。

这与websocket有什么关系?

首先,Websocket建立在或者借用HTTP协议来完成部分握手工作。

首先,让我们看一下典型的Websocket握手(借自维基百科...)

GET/chatHTTP/1.1

Host:server.example.com

升级:websocket

连接:升级

Sec-WebSocket-Key:x3JJHMbDL1EzLkh9GBhXDw==

Sec-WebSocket-Protocol:chat,superchat

Sec-WebSocket-Version:13

原文:

任何熟悉HTTP的孩子都会知道这个握手看起来像这样:本来就已经准备好了。
HTTP协议请求还有一些事情:但让我解释一下这个功能。

2.1升级与连接

升级:websocket

连接:升级

这是Websocket、Apache、Tomcat、Nginx的核心等Server:注意,启动Websocket协议。
请帮我找到合适的助手来处理这个问题,而不是老式的HTTP。

2.2Sec-WebSocket

Sec-WebSocket-Key:x3JJHMbDL1EzLkh9GBhXDw==

Sec-WebSocket-协议:聊天、超级聊天

Sec-WebSocket-Version:13

首先,?Sec-WebSocket-Key是Base64encode值。
这是由浏览器随机生成的。
姐姐,别被骗了。
我,我想检查Ni是否真的是一个Websocket助手。

那么?Sec_WebSocket-Protocol是一个自定义字符串,用于区分同一URL中不同服务所需的协议。
简单理解:今晚我要为A服务。
别搞错了~

最后,?Sec-WebSocket-Version告诉服务器使用的是哪个WebSocketDraft(协议版本)。
最初,Websocket协议仍然处于流行状态。
在Draft阶段,有各种奇怪的协议和很多奇怪的和不同的东西。
Firefox和Chrome使用不同的版本。
起初这是一个大问题,因为Websocket协议太多。

不过现在好了,解决了~大家都用的东西~脱水:服务员,想要13岁→_→

服务器然后返回这样的内容,说明请求被接受了。
,WebSocket已经搭建成功!

HTTP/1.1101转换协议

升级:websocket

连接:升级

Sec-WebSocket-Accept:HSmrc0sMlYUkAGmm5OPpG2HaGWk=

>

Sec-WebSocket-protocol:chat

最后负责HTTP这是一个区域。
我们通知客户协议转换成功。
告诉客户端即将升级的是Websocket协议,而不是mozillasocket、lurnarsocket或Shitsocket问题仍然得到解决。

那么?Sec-WebSocket-Accept就是服务器验证并加密后的Sec-WebSocket-Key。
服务员:好的。
好的。
让我给你出示我的身份证来证明这一点。
后面的Sec-WebSocket-Protocol表示最终使用的协议。

现在HTTP已经完成了所有工作,下一步就是完全迁移到Websocket协议下。
具体合同这里不再讨论。

—————技术分析部分已经完成了——

这个你已经讲了很久了,但是Websocket、httplongpoll、ajax轮询不是吗?实时传输信息?

好了,年轻人,我们来说说websockets的使用吧。
胡萝卜(红)

3.Websocket的作用

在讲Websocket之前,我们先讲一下longpoll和ajax。

3.1ajax轮询

Ajax轮询的原理非常简单。
这允许浏览器每隔几秒向服务器发送一个请求,询问是否有新信息。

重现场景:

客户端:啦啦啦,有什么新信息吗(请求)

服务器:没有(响应)

客户端:Lalala,你有什么新信息吗?(请求)

服务器:没有。

(答)

客户:拉拉拉,有什么新消息吗?(请求)

服务器:这太烦人了,什么都没有。

(回复)

客户:啦啦啦,有新消息吗?(请求)

服务器:好的,好的。
我告诉你。
(回复)

客户:啦啦啦,有新消息吗?(请求)

服务器:。




没有。



没有。


没有(响应)?--循环

3.1?长轮询

长轮询?其实原理和“ajax轮询”类似,都是使用轮询。
不过,采用了阻塞模式(继续拨打,不接就不挂断)。
这意味着...如果客户端发起连接后没有消息,则不会向客户端返回任何响应。
它不会返回,直到有消息,客户端重新建立连接,然后循环再次开始。

重现场景:

客户:啦啦啦,有什么新消息吗?如果没有,请等到它出来并返回(请求)

服务器:嗯嗯。

请耐心等待,直到有消息。

来吧(回复)

客户:啦啦啦,有什么新消息吗?如果没有,请等到可用后再返回给我(请求)?-loop

From正如上面所看到的,这两个方法实际上是不断建立HTTP连接,然后让服务器处理它它正在等待完成,这可能反映了HTTP协议的另一个特性:被动性。

什么是被动性?实际上,服务器无法直接连接到客户端,只能由客户端启动。

简单来说,服务器就是一个很懒的冰箱(开个玩笑)(连主动发起连接都不能),来了顾客,主人就不管了。
您需要报告您有多累。

说完了,我们来说说上面的弊端(抱歉说这么废话了,OAQ)

从上面你就很容易看出了。
二任何超过这个数量的东西都是资源密集型的。

Ajax轮询需要快速的服务器处理速度和资源。
(速度)长跌落?它们需要高并发性,这意味着能够同时容纳客户。
(站点大小)

因此,ajax轮询和长轮询都可能发生这种情况。

客户:拉拉拉拉,有消息了吗?

服务器:月线占线。
请稍后再试(503ServerUnavailable)

客户端:。



好吧,啦啦啦,有新消息吗?

服务器:月线占线。
请稍后重试。
(503ServerUnavailable)

客户端:那你旁边的服务器就很忙了。
冰箱,我想要更多冰箱!更多的。

更多的。

(我错了...这又是一个笑话...)

3.2WebSocket

从上面的例子中,你可以看到这两种方法都不是最好的方法。
你可以。
它需要大量的资源。

我们需要更快的速度,我们需要更多的“手机”。
这两者都将导致对“手机”的需求增加。

哦,顺便说一句,我忘了说HTTP仍然是一个有状态的协议。

通俗地说,服务员每天要面对这么多的顾客,一旦挂断电话,他们就会忘记一切,把一切都扔掉。
第二次,需要再次通知服务器。

所以这个时候Websocket就出现了。
他用HTTP解决了这些问题。
第一,被动性。
服务器完成协议升级(HTTP-Websocket)后,服务器可以主动向客户端推送信息。
因此,上述场景可以修改如下:

客户:拉拉拉,我想设置Websocket协议。
所需服务:聊天,Websocket协议版本:17(HTTPRequest)

服务器:好的,已确认,已升级Websocket协议(HTTPProtocolsSwitched)

客户端:如果您有信息,请推送。

服务器:是的,我有时会告诉你。

服务器:巴拉巴拉巴拉巴拉

服务器:巴拉巴拉巴拉巴拉

服务器:哈哈

服务器:我笑死了哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈!

事情是这样的。
只需一次HTTP请求即可实现连续的信息流传输。
(在编程中,这种设计称为回调,这意味着当信息可用时它会通知我,而不是我每次都愚蠢地跑去询问。

这些协议解决了上面的同步延迟。
它还消耗大量资源。
那么他为什么要解决服务器的资源消耗问题呢?

实际上,我们使用的程序要经过两层代理。
这意味着HTTP协议由Nginx等服务器解析,然后发送到适当的处理程序(例如PHP)进行处理。

简单来说,有一个非常快的操作员(Nginx)负责将问题转发给相应的客服(handler)。

操作员本身基本够快,但每次都会卡在客服(处理员)上,有些客服处理速度太慢。
,因此缺乏客户服务。
解决了这些问题之后,Websocket就可以直接和运营商建立持久连接,如果有信息,客服就会想办法通知运营商,然后运营商再传递给客户。
这可以帮助解决客户服务处理速度太慢的问题。

同时,传统方法需要不断地建立和终止HTTP协议。
HTTP是无状态的,所以每次都必须重传ID信息(识别信息)来通知服务器用户的情况。
是。

虽然接线员的速度非常快,但当他们每次必须收听太多消息,同时还要不断地将这些信息传输给客户服务时,他们的效率就会降低。
您不仅会浪费客户服务处理时间,还会在网络传输上花费过多的流量/时间。

然而,Websockets只需要一次HTTP握手,因此整个通信过程是通过一次连接/状态建立的,从而避免了HTTP的无状态性。
服务器始终知道您的信息,直到您关闭请求。
这解决了运营商必须重复解析HTTP协议并检查身份信息信息的问题。

同时客户端主动发出请求,服务器(push)有信息就发送(当然客户端还是主动等待信息发送……),如果没有信息的话,运营商(Nginx),所以不需要占用慢速的客服(Handler)。

如何在客户端使用Websocket如下。
不支持Websocket。

答案是:不。
不过,通过上面提到的longpoll和ajax轮询,都可以模拟类似的效果。

读完本文,你将充分了解Websocket的原理。

内容来自知乎发送。

读完本文,你将充分了解Websocket的原理。
>

如果觉得文字还不够,可以通过这里推荐的视频来学习SpringBoot。

《从零开始学习SpringBoot》视频教程链接:

【?Java全栈技术分享】,Jacky。

springboot启动流程

入口是main方法。
这个main方法传递了一个新的SpringApplication对象。
传递的bean源码是一个用SpringBootApplication注解的类,执行方法如下。
叫。

springboot启动流程分为两部分。
一是准备阶段,二是执行阶段。

准备阶段主要包括以下步骤:

1.BeanConfigurationSource是bean的来源,是一个注释为SpringBootApplication的类。

2.推理,应用类型的推理包括webflux、webservlet、none

这是通过线程栈实现的。
main位于异常堆栈上的类。

3.只需在此处加载应用程序上下文即可。

4.这两个都在mete-info/spring.factories文件中。

在执行阶段,调用run方法。

首先加载SpringApplication运行时监听器SpringApplicationRunListener。
默认情况下,只应传递一个EventPublishingRunListener。
在这里调用准备阶段加载的监听器。
广播公司广播事件。

然后根据推断的类型创建ApplicationContext。
ConfigurableApplicationContext

初始化此上下文,刷新方法最终返回此上下文。

自动组装:

1.启用自动配置,EnableAutoConfiguration

2.自动配置(注解组装、模式组装、条件组装)实现及bean配置

3.使用spring.factorie配置此配置。
s文件

SpringBoot教程第5部分:beatsql

BeetSql是一个功能齐全的DAO工具,兼具Hibernate和Mybatis的优点。
这对于以SQL为中心且需要能够自动生成SQL的工具的应用程序来说是理想的选择。
许多常用的SQL应用程序。

beatlsql的好处

依赖介绍

这些依赖都是必需的。

集成步骤

Springboot没有beatlsql的快速入门组件,所以需要自己导入相关的bean,包括数据源、包扫描、事务管理器等。

在应用程序中添加以下代码:

在资源包下添加META_INF文件夹,并添加spring-devtools.properties:

restart.include.beetl=/beetl-2.3.2.jar

restart.include.beetlsql=/beetlsql-2.3.1.jar

在模板下添加index.btl文件。

添加jar并配置beatlsql的bean和资源配置后,springboot就可以访问数据库类了。

看一个舒适的示例

数据库表初始化

bean

数据访问数据层

接口条件继承BaseMapper,当你需要自定义sq时,会给你一些单表查询的属性。
l、在resouses/sql/account.md文件下创建一个文件即可。

上面的“===”是对应接口的方法名的唯一标识,后面的“*”它是一个唯一的标识符,后面是注释,下面是自定义的SQL语句。
请参阅官方文档了解更多详细信息。

Web层

服务层这里省略,实际开发时会添加。

代码通过了所有邮递员测试。

从我个人的经验来看,我尝试过一些使用beansql的项目,但从未在真正的生产环境中使用过。
不过springboot并不直接支持自动组装,所以必须自己对bean进行注解。
而且由于使用这个ORM的人并不多,所以不知道使用的时候有没有什么问题。
而且中文文档也比较熟悉。

我刚刚使用了springboot,并使用了redis作为缓存数据库。
哪里可以找到更好的教程?

首先,我可以在多台服务器上安装memcached吗?首先分别指定容量和端口。

Access使用集群模式,因此只需在Spring配置文件中配置即可。

值可以放在任何对象上,

每个键值的生命周期可以在部署时独立设置。

类库可以使用spymemcached

数据的更新方法是用于后台计划的任务。
可以运行了。

以下是springmvc的配置。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

beanid="memcachedClient"吸出lass="net.spy.memcached.spring.MemcachedClientFactoryBean"

propertyname="servers"value="服务器A:端口,服务器B:端口,服务器C:端口"/

propertyname="协议"value="BINARY"/

propertyname="transcoder"

beanclass="net.spy.memcached.transcoders.SerializingTranscoder"

propertyname="compressionThreshold"value="1024"/

/bean

/property

propertyname="opTimeout"value="2000"/

propertyname=“timeoutExceptionThreshold”值=“1”998"/

propertyname="locatorType"value="CONSISTENT"/

propertyname="hashAlg"

valuetype="net.spy.memcached.DefaultHashAlgorithm“ketama_HASH/值

/property

propertyname="failureMode"value="redistribute"/

propertyname="useNagleAlgorithm"value="false"/

/empty

大学计算机系一定要知道的信息

计算机专业信息封锁危及生命,打破壁垒至关重要。

网站

Leetcode

Leetcode拥有2000多个原生编程题库,支持十多种主要编程语言。

菜鸟教程

一个优秀的教程网站,提供各种基本编程技术的教程。

stackOverflow

一个编程IT问答网站,您可以在其中找到大多数编程问题的答案。

coursera

全球最大的在线学习平台之一;您可以免费收听哈佛大学等世界名校的CS课程。

w3Schools

一个为初级Web开发者构建的网站,涵盖当前主流编程语言

HackerRank

一个供程序员加入各种编程语言的网站

HackerRank

编程语言竞赛并测试您的技能。

GitHub

全球最大的代码托管平台;有许多优秀的开源项目和教程资源值得程序员探索。

Gitee

本地原创开源项目集合,拥有超过800万开发者与本地代码托管合作。

碧占宝博主

商硅谷(大佬,很多嵌入式教程和介绍,非常适合自学)

CodeSheep

程序员鱼皮

糟糕的程序员

技术胖(献给学前端的朋友(正确)

宝藏软件

Fork(可视化git作为代码提交工具)

IDEA(Java开发首选IDE,eclipse,真的可以dumpmyeclipse

VsCode(前后端大家最喜欢的代码编辑器:开发,各种插件支持)

WebStorm(重前端开发工具,我写react的时候就会用它)

Sequelpro(轻量级数据库客户端,确实适合一些本地开发者)

Transmit(文件ftp传输工具,配合Terminals使用效果更好))

附加RedisDesktopManager(redis接口管理工具)

DataGrip(JetBrains下)一个数据库连接管理软件,非常好用,而且我可以和它互换使用12)

一个SSH链接工具,类似于For。
(仅适用于Mac)

Pycharm(Python开发的首选IDE

)。
热门文章
1
SQL多表连接查询全解析:JOIN语句应... sql多表关联查询在执行SQL多表连接查询时,可以使用JOIN语句将多个表连接在...

2
Java中字符串类型详解:String与... 变量有字符类型,为什么没有字符串类型??基本类型:charshort、int、l...

3
JavaSE与JavaEE:从基础到企业... javase 和javaee的区别?JavaSE和JavaEE...

4
Java程序员面试必知:核心技术问答与技... java编程程序员技术面试常见面试?随着互联网的不断发展,Java开发已经成为很...

5
Java.exe与Javaw.exe:区... 程序中java和javaw有什么区别java和javaw的区别:两者都是Java...

6
深入解析:Java中的javax包及其与... JAVA导入时,什么是javax?awt是java1.0,swing是java2...

7
Java中Scanner类导入位置及使用... 在java中这句语言“importjava.util.Scanner;”是什么意...

8
Java数组倒序输出:排序后逆序存储方法... Java数组倒序输出?1.反转数组的方法有很多种,比如先排序,然后倒序存储pub...

9
C语言改错难题解析:第二处错误详解及修改... 请问这个C语言改错题怎么做呀?我做了很久都没写出来,第二处错误不知道怎么改。那位...

10
C语言实验心得:C51编程技巧与性能优化... c语言实验报告心得C语言测试经验:1、只有经常使用或者运算速度要求高的变量才应该...