当前位置: 首页 > news >正文

初始SpringBoot

此文介绍一些有关我对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的理解和总结

相关文章:

  • Java | 深拷贝与浅拷贝工具类解析和自定义实现
  • 数据预处理:前缀和算法详解
  • Vue3 + TypeScript 实现二维码生成与展示
  • poi生成横向文档以及复杂表头
  • 驱动开发硬核特训 · Day 18:深入理解字符设备驱动与子系统的协作机制(以 i.MX8MP 为例)
  • 欧拉计划 Project Euler54(扑克手牌)题解
  • MySQL运算符
  • stack和queue的学习
  • 【实证分析】ESG发展对企业新质生产力影响的研究—来自中国A股上市企业的经验
  • ROS第十二梯:ros-noetic和Anaconda联合使用
  • Python常用的第三方模块之【pymysql库】操作数据库
  • HarmonyOS 5.0应用开发——MVVM模式的应用
  • CF2103F Maximize Nor
  • AI 人工智能模型:从理论到实践的深度解析⚡YQW · Studio ⚡【Deepseek】【Chat GPT】
  • 深度学习中的黑暗角落:梯度消失与梯度爆炸问题解析
  • springboot+vue 支付宝支付(沙箱方式,测试环境使用)
  • VUE Element-ui Message 消息提示组件自定义封装
  • 如何在编译命令中添加灰度标识
  • cnas认证注意事项,cnas认证审核有效期?cnas认证难吗?
  • 思科路由器密码绕过+重置
  • 澎湃读报丨央媒头版头条集中刊发:大国应有的样子
  • 五一假期首日,多地党政主官暗访督查节日安全和值班值守工作
  • 国际油价重挫!美股道指连跌三月,啥情况?
  • 抗美援朝老战士宁昭逝世,享年93岁
  • 济南高新区一季度GDP增长8.5%,第二产业增加值同比增长14.4%
  • 许峰已任江苏省南京市副市长