此文介绍一些有关我对SpringBoot的学习理解,
声明:此处我的IDEA是企业版的,可能和社区版会有一些差异
1. 第⼀个SpringBoot程序
1. SpringBoot介绍
我们看下Spring官方的介绍
可以看到,Spring让Java程序更加快速,简单和安全.Spring对于速度、简单性和生产力的关注使其成为世界上最流行的Java框架。
Spring官方提供了很多开源的项目,覆盖范围从Web开发到大数据,Spring发展到了今天,已经形成了自己的生态圈.我们在开发时,也倾向于使用Spring官方提供的技术,来解决对应的问题.
这些项目都是基于SpringFramework来进行开发的,但是SpringFramework存在配置多,入门难的问题,Spring也意识到了这个问题,为了简化开发者的使用,从而创造性的推出了SpringBoot.
Spring Boot的诞生是为了简化Spring程序开发的.
1.2 Spring Boot项⽬创建
1.2.1 项目创建方法
因为我使用的Idea企业版,可以直接创建
对于其他社区版的创建就相对麻烦了,先要安装SpringBootHelper插件才能创建Spring Boot 项目,但是官方已经不提供该插件的下载了,所以是社区版的小明们,可以下载一个企业版或者看看别的博主有没有相关解决办法
还有一种方式就是我们可以使用Spring官方提供的网页版来创建SpringBoot 项目
网页版创建项目先访问:网页创建SpingBoot项目
1.2.2 项目创建后目录
无论用那种方式创建,创建好之后的项目目录如下:
说明:
Spring Boot 项目有两个主要的目录:
- src/main/java: Java源代码
- src/main/resources: 为静态资源或配置⽂件:
/static: 静态资源文件夹,比如js,css,html等静态文件,不需要服务器数据进行绑定的页面
/templates: 模版资源文件夹,主要存放动态模板文件,比如JSP,Freemarker,Thymeleaf等需要服务器动态渲染数据的文件 - src/test/java: 测试代码源代码
- target: 编译后的文件路径
- pom.xml: maven配置文件
1.2.3 pom文件
<?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>3.4.4</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>demo</description>
<url/>
<licenses>
<license/>
</licenses>
<developers>
<developer/>
</developers>
<scm>
<connection/>
<developerConnection/>
<tag/>
<url/>
</scm>
<properties>
<java.version>17</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
pom.xml文件里的具体信息,不需要过度关注,我们主要看<dependencies>
标签⾥⾯的内容
pom文件中,引入了两个依赖
- spring-boot-starter-web:包含了web应用开发所需要的常见依赖
- spring-boot-starter-test:包含了单元测试所需要的常见依赖
1.2.4 pom文件涉及的父工程
我们发现,pom文件中这个依赖没有指定具体的版本号,但我们的jar包也正常引入到项目中了.并且查看的话,是有版本号的
并且我们发现本地的jar包也是下载下来的,那么为什么这里没有指定<version>
,程序也可以正常运行呢?
因为每⼀个SpringBoot工程,都有⼀个父工程.其依赖的版本号,在父工程中统⼀管理.
父工程指定版本号后,就会自动引入和所指定版本对应的依赖,创建的SpringBoot项目,会继承SpringBoot父工程.
1.2.5 运行第一个SpringBoot项目
在创建好一个SpringBoot项目后就会自动生成一个启动类,如下:
说明:@SpringBootApplication
是SpringBoot启动类注解
启动后效果图如下:
1.2.6 输出内容到浏览器页面
普通的Java类只能将结果输出到IDEA的控制台上,并不能在浏览器上有效果,不是我们想要的结果,所以我们要使用SpringBoot来实现和浏览器及用户的交互
在创建的项目包路径下创建UserController文件,实现代码如下:
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class UserController {
@RequestMapping("/hello")
public String hello(){
return "hello,my 1st spring boot project";
}
}
重新启动项目,访问 http://127.0.0.1:8080/hello 最终效果如下:
1.2.7 Web服务器
浏览器和服务器两端进行数据交互,使用的就是HTTP协议
HTTP协议就是HTTP客户端和HTTP服务器之间的交互数据的格式.
Web服务器就是对HTTP协议进行封装,程序员不需要直接对协议进行操作(自己写代码去解析http协议规则),让Web开发更加便捷,所以Web服务器也被称为WWW服务器, HTTP服务器,主要功能是提供网上信息浏览服务.
常见的Web服务器有:Apache,Nginx,IIS,Tomcat,Jboss等
SpringBoot 内置了Tomcat服务器,无需配置即可直接运行
Tocmat默认端口号是8080,所以我们程序访问时的端口号也是8080
1.2.8 请求响应流程分析
浏览器输入URL之后,发起请求,就和服务器之间建立了连接
服务器:
浏览器:
- 输入网址:http://127.0.0.1:8080/hello
- 通过IP地址127.0.0.1定位到网络上的⼀台计算机,127.0.0.1就是本机
- 通过端口号8080找到计算机上对应的进程,也就是在本地计算机中找到正在运行的8080端口的程序
- /user/sayhi是请求资源位置
- 资源:对计算机而言资源就是数据
- web资源:通过网络可以访问到的资源(通常是指存放在服务器上的数据)
- http://127.0.0.1:8080/user/hello,就是向本地计算机中的8080端口程序,获取资源位置是/user/hello的数据
- 8080端口程序,在服务器找/hello位置的资源数据,发给浏览器
服务器:
- 接收到浏览器发送的信息(如:/user/hello)
- 在服务器上找到/user/hello的资源
- 把资源发送给浏览器
1.2.9 常见的访问出错情况
1.2.9.1 404
404 表示用户访问的资源不存在.大概率是URL的路径写的不正确
情况1:单词拼写错误
情况2:注解错误
//注解错误
@Controller
public class UserController {
@RequestMapping("/hello")
public String hello(){
return "hello,my 1st spring boot project";
}
}
1.2.9.2 500
服务器出现内部错误.⼀般是服务器的代码执行过程中遇到了些特殊情况(服务器异常崩溃)会产生这个状态码.
比如:
@RestController
public class UserController {
@RequestMapping("/hello")
public String hello(){
//此处10/0 错误
int a=10/0;
return "hello,my 1st spring boot project";
}
}
此时,程序后端控制台已经打印了具体的异常调用栈
1.2.9.3 无法访问此网站
⼀般是Tomcat启动失败了.
这种情况⼀般是服务未成功启动,也就是tomcat未启动,或者IP/端口写错
打开Fiddler的话,页面如下:
以上就是我对第一个springboot的理解和总结