【JavaEE进阶】第一个Spring Boot程序
目录
🌴安装插件
🎄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项⽬了. 比特就