【JavaEE进阶】第一个Spring Boot程序

目录

🌴安装插件

[🎄Spring Boot介绍](#🎄Spring Boot介绍)

[🌳Spring Boot项目创建](#🌳Spring Boot项目创建)

[🚩创建Spring Boot项目](#🚩创建Spring Boot项目)

[🏀jar 包下载不下来问题](#🏀jar 包下载不下来问题)

🚩启动项目

🌲目录介绍

🚩src文件

🚩target文件

🚩gitignore文件

🚩pom.xml文件

🏀标签

[🏀标签 - 父工程](#🏀标签 - 父工程)

🏀3.3版本后新增标签

🏀标签

🏀标签

🚩SNAPSHOT

🎍代码介绍

🚩Web服务器

🚩请求流程分析

🚩访问出错

🏀404

🏀500

🏀程序启动失败


🌴安装插件

若想安装自己硬盘上下载的插件:

File -> setting -> 选择小齿轮

安装完之后重启idea,若是安装的Spring Boot插件,创建项目时就可以看到Spring Initializr了

🎄Spring Boot介绍

在学习SpringBoot之前,我们先来认识⼀下Spring

我们看下Spring官⽅(Spring | Home)的介绍

可以看到,Spring让Java程序更加快速,简单和安全.Spring对于速度、简单性和⽣产⼒的关注使其成为 世界上最流⾏的Java框架。

Spring官⽅提供了很多开源的项⽬,覆盖范围从Web开发到⼤数据,Spring发展到了今天,已经形成了⾃ ⼰的⽣态圈.我们在开发时,也倾向于使⽤Spring官⽅提供的技术,来解决对应的问题.

Spring有两个含义:

  • 一个是Spring家族,也就是我们常说的Spring全家桶(在面试中所说的,以及在企业中所说的)
  • 还一个是指Spring Core,也就是Spring Framework原生框架,为Spring的核心,在Spring早期的时候,就只有Spring Framework,后续就是基于该框架上进行的一个升级,就有了Spring Boot,Spring Cloud等

这些项⽬都是基于SpringFramework来进⾏开发的,但是SpringFramework存在配置多,⼊⻔难的问 题,Spring也意识到了这个问题,为了简化开发者的使⽤,从⽽创造性的推出了SpringBoot,无配置

注意:在JavaEE进阶文章中,对于JDK来说,大多数都是用的第三方的东西,包括Spring。

接下来我们看下什么是SpringBoot.

Spring Boot的诞⽣是为了简化Spring程序(也就是Spring Framework)开发的. Spring Boot 翻译⼀下就是Spring脚⼿架,什么是脚⼿架呢?如下图所⽰:

盖房⼦的这个架⼦就是脚⼿架,脚⼿架的作⽤是砌筑砖墙,浇筑混凝⼟、⽅便墙⾯抹灰,装饰和粉刷 的,简单来说,就是使⽤脚⼿架可以更快速的盖房⼦

⽽SpringBoot就是Spring框架的脚⼿架,它是为了快速开发Spring框架⽽诞⽣的.

以前铺路是这样的:

改造之后的效率是这样的:

或者是这样的:

可以看到,每次技术的诞⽣和改进相⽐于之前的效率会有⼀个质的提升,⽽SpringBoot相⽐于 Spring 也是如此.

🌳Spring Boot项目创建

🚩创建Spring Boot项目

接下来我们来创建SpringBoot项⽬: File-> New->Project

修改信息:

点击下一步之后,选择Spring Boot的版本(带有SNAPSHOT的版本不要选!),其他版本随意

选择Spring Web,点击下一步

选择项目存放的路径(路径必须以项目名结尾),点击Finish即可

创建完成之后,左下角若有Load Maven Project提示,一定要点一下

创建完成之后,查看pom.xml文件,发现报错了

可以复制我所下载的包去这个网站上搜索一下(https://mvnrepository.com),发现根本没有3.4.0.RELEASE 这个版本,只有3.4.0,删除 .RELEASE重新刷新即可。

🏀jar 包下载不下来问题

  1. 网络问题,尤其是校园网

  2. 确认是否设置了国内源

【JavaEE进阶】关于Maven-CSDN博客 查看该文章即可

  1. 确认包是否存在

https://mvnrepository.com 根据该网站进行搜索,如上图所示

  1. 查看本地仓库

若该包确实存在,根据该包路径查看是否下载到本地仓库,可能会出现在下载过程中换网导致只下载了一半。

  1. 多次刷新,尝试切换网络

若已经确定该包已经下载到本地仓库了,多次刷新,换时间刷新。

当我们查看该文件,里面有一些关于Maven相关的,此时已经加载完成了

🚩启动项目

项目启动:由于没有写代码,所有什么都看不到

自己写一个接口:

注意:注解括号中的路径与方法名可以不一样

运行项目之后访问该接口:

🌲目录介绍

上述目录中,一些不太重要的文件就可以删掉,比如 .mvn mvnw mvnw.cmd HELP.md

🚩src文件

main文件下的java文件为源代码的入口文件(标识为蓝色,取消标识代码将运行出错),相当于大门,test文件下的java文件为测试源代码的入口文件(标识为绿色),测试代码是开发人员的自测代码,并不是由测试人员编写

自动生成的代码:SpringbootDemoApplication名称跟创建的项目名有关,并不需要关心;@SpringBootApplication注解标识的是一个启动注解,即当前这个类为启动类

自测代码:

resources目录(配置文件的根目录):static存放静态的文件,例如html,css,js;templates存放一些模板文件;application.properties配置文件(是一个标识的应用名称,目前没有用)

🚩target文件

其实没什么用,也可以删掉。它是一个class文件,我们说一个Java程序要运行的话,要编译成一个.class文件,则这个target文件中存放的都是class文件

🚩gitignore文件

上传git的时候,需要忽视的一些文件

🚩pom.xml文件

这是一个比较复杂的文件,Maven就是通过这一个pom文件来进行管理的,该文件用的格式为xml,xml的格式是由标签组成

🏀<dependencies>标签

上述dependencies标签中,添加了两个依赖,一个是springboot-starter-parent,这是与测试相关的;一个为springboot-starter-web,这是与web相关的,上述写一个接口,就是一个web(通过浏览器可以访问的就是web)。

当我们在创建项目时勾选上Spring Web就会自动添加这个两个依赖,在这勾选的越多,添加的依赖也越多;当我们忘记勾选时,也可以在dependencies标签中手动添加

我们说一个dependency标签为一个坐标,它里面分为三部分,为groupId(组织),artifactId(项目名),version(版本),但是上述dependency标签中只有前面两个,我们可根据上述artifactId去Maven仓库搜一下这个包,里面有很多版本。

那在dependency标签中用的是哪个版本呢?将鼠标移动到artifactId标签上即可

🏀<parent>标签 - 父工程

那为什么会使用3.4.0这个版本,不用其他版本,这个版本的决定是有pom.xml文件中的parent标签决定的,相当于在这里面版本已经决定好了,你不用在决定了。当然也可以自己决定(手动添加version,但是非常不建议!!!),所以我们说SpringBoot好用,就是因为它帮我们管理了版本,防止由于版本的不同发生冲突。

🏀3.3版本后新增标签

接下里查看3.3版本之后新增的内容,我们可以看到这是一个空的,这些可删可不删

来看看有值的样式

🏀<properties>标签

JDK版本

🏀<build>标签

构建时使用的插件,也是可删可不删,用于项目构建打包

🚩SNAPSHOT

上述在创建项目的时候,我们说不要选择带有SNAPSHOT的版本,因为它表示非稳定版本,可能会发生变化。版本分为SNAPSHOT和RELEASE(发布版本,稳定的)

在这个version中,对于版本的定义在实际工作中,看团队怎么写就怎么写,有的团队喜欢跟RELEASE,有的喜欢直接把SNAPSHOT删掉,如果是SNAPSHOT,那么这个包是可能会发生变化的,就有可能当前基于这个版本能运行成功,但是在上线的时候,可能会导致包发生变化,就使得程序运行不起来,或者是程序已经在线上运行了,但是用的是非稳定版本,非稳定版本表示可以修改,稳定版本是不能修改的,即使有bug也不能修改,只能通过升级版本的方式。

🎍代码介绍

🚩Web服务器

上述我们已经运行了一个springboot项目,那为什么是这个地址?

其中涉及到Web服务器,我们的程序之所以能够运行,其实是把这个项目发在了Web服务器上,这里的服务器就是Tomcat,Web服务器也就是Web容器,用来装web项目的,Web项目要想启动,就必须要使用web服务器。

浏览器和服务器两端进⾏数据交互,使⽤的就是HTTP协议

前⾯我们已经学习了HTTP协议,知道了HTTP协议就是HTTP客⼾端和HTTP服务器之间的交互数据 的格式.

Web服务器就是对HTTP协议进⾏封装,程序员不需要直接对协议进⾏操作(⾃⼰写代码去解析http协议 规则),让Web开发更加便捷,所以Web服务器也被称为WWW服务器, HTTP服务器,主要功能是提供⽹ 上信息浏览服务.

常⻅的Web服务器有:Apache,Nginx,IIS,Tomcat,Jboss等

SpringBoot 内置了Tomcat服务器,⽆需配置即可直接运⾏

Tocmat默认端⼝号是8080,所以我们程序访问时的端⼝号也是8080

🚩请求流程分析

浏览器输⼊URL之后,发起请求,就和服务器之间建⽴了连接

服务器:

浏览器:

  • 输⼊⽹址:http://127.0.0.1:8080/hello
  • 通过IP地址127.0.0.1定位到⽹络上的⼀台计算机,127.0.0.1就是本机
  • 通过端⼝号8080找到计算机上对应的进程,也就是在本地计算机中找到正在运⾏的8080端⼝的程序
  • /hello是请求资源位置
  • 资源:对计算机⽽⾔资源就是数据
  • web资源:通过⽹络可以访问到的资源(通常是指存放在服务器上的数据)
  • http://127.0.0.1:8080/hello ,就是向本地计算机中的8080端⼝程序,获取资源位置 是/hello的数据
  • 8080端⼝程序,在服务器找/hello位置的资源数据,发给浏览器

服务器:

  • 接收到浏览器发送的信息(如:/hello)
  • 在服务器上找到/hello的资源
  • 把资源发送给浏览器

🚩访问出错

我们在访问的时候,浏览器就是客户端,我们的项目就是服务端,4xx一般是客户端发生错误,5xx一般是服务端发生错误。

🏀404

404 表⽰⽤⼾访问的资源不存在.⼤概率是URL的路径写的不正确

例如:将项目代码注解改一下

此时虽然是修改的服务端,但还是属于客户端url地址错误,访问的这个地址在服务端这边不存在

通过Fiddler观察Http请求

🏀500

服务器内部错误

查看错误日志,错误日志是一段一段的,从下往上看,先看最后一段的首行,若该行看不懂继续向上查看

🏀程序启动失败

⼀般是Tomcat启动失败了

这种情况⼀般是服务未成功启动,也就是tomcat未启动,或者IP/端⼝写错

小结:

最开始学习Spring的时候,会遇到很多问题,更多是环境相关的问题. 我们不仅要学习Spring代码的基本写法,更重要的是学习排查错误的思路

总结:

Spring Boot 是为了快速开发Spring⽽诞⽣的,SpringBoot具备:

  • SpringBoot提供了启动添加依赖的功能,可以快速集成框架.
  • 内置web服务器,⽆需配置Tomcat等Web服务器,直接运⾏和部署程序.
  • 可以完全抛弃繁琐的XML,使⽤注解和配置的⽅式进⾏开发
  • ⽀持更多的监控的指标,可以更好的了解项⽬的运⾏情况等特点.

Spring Boot 可使⽤Idea或⽹⻚创建,它的设计思想是约定⼤于配置,类上标注 @SpringBootApplication 就可以启动SpringBoot项⽬了. 比特就

相关推荐
wyiyiyi14 分钟前
【Web后端】Django、flask及其场景——以构建系统原型为例
前端·数据库·后端·python·django·flask
gnip37 分钟前
vite和webpack打包结构控制
前端·javascript
一只爱撸猫的程序猿1 小时前
使用Spring AI配合MCP(Model Context Protocol)构建一个"智能代码审查助手"
spring boot·aigc·ai编程
excel1 小时前
在二维 Canvas 中模拟三角形绕 X、Y 轴旋转
前端
甄超锋1 小时前
Java ArrayList的介绍及用法
java·windows·spring boot·python·spring·spring cloud·tomcat
阿华的代码王国1 小时前
【Android】RecyclerView复用CheckBox的异常状态
android·xml·java·前端·后端
一条上岸小咸鱼1 小时前
Kotlin 基本数据类型(三):Booleans、Characters
android·前端·kotlin
Jimmy1 小时前
AI 代理是什么,其有助于我们实现更智能编程
前端·后端·ai编程
ZXT2 小时前
promise & async await总结
前端
Jerry说前后端2 小时前
RecyclerView 性能优化:从原理到实践的深度优化方案
android·前端·性能优化