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

发布于:2024-12-23 ⋅ 阅读:(12) ⋅ 点赞:(0)

目录

🌴安装插件

🎄Spring Boot介绍

🌳Spring Boot项目创建

🚩创建Spring Boot项目

🏀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博客 查看该文章即可

3. 确认包是否存在

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

4. 查看本地仓库

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

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

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

当我们查看该文件,里面有一些关于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项⽬了. 比特就