SpringBoot框架快速入门

news2024/11/18 13:56:06

1、起步依赖

1.概述

  • 在入门案例中,我们引入了web依赖和test依赖,这两个依赖是SpringBoot中的starter依赖,starter依赖也被称为起步依赖
  • SpringBoot 在配置上相比Spring要简单许多,其核心在于spring-boot-starter,在使用SpringBoot来搭建一个项目时,只需要引入官方提供的starter,就可以直接使用,免去了各种配置。starter简单来讲就是引入了一些相关依赖和一些初始化的配置
  • Spring官方提供了很多starter,第三方也可以定义starter。为了加以区分,starter从名称上进行了如下规范
    • Spring官方提供的starter名称为:spring-boot-starter-xxx 例如Spring官方提供的spring-boot-starter-web
    • 第三方提供的starter名称为:xxx-spring-boot-starter 例如由mybatis提供的mybatis-spring-boot-starter

2.详解

2.1.起步依赖
  • 起步依赖其实就是将具备某种功能的坐标打包到一起,可以简化依赖导入的过程。例如,我们导入spring-boot-starter-web这个starter,则和web开发相关的jar包都一起导入到项目中了。如下图所示
  • spring-boot-starter-web导入的其实是一个Web框架Spring-MVC的依赖,在SpringBoot项目中自动做了整合,后续我们会进行讲解

2.2.web依赖

  • spring-boot-starter-web:内部把关于Web开发所有的依赖都已经导入并且指定了版本,只需引入 spring-boot-starter-web 依赖就可以实现Web开发的需要的功能
2.3.test依赖
  • spring-boot-starter-test:内部包含了单元测试所需要的常见依赖
2.4.官方起步依赖
  • Spring的官方提供了很多现成的starter,我们在开发相关应用时,只需要引入对应的starter即可
  • 每一个起步依赖,都用于开发一个特定的功能,例如:当我们开发中需要使用redis数据库时,只需要在SpringBoot项目中,引入:springboot-starter-redis ,即可导入redis开发所需要的依赖

2、统一版本管理

1.概述

  • 在入门案例中,我们通过maven引入的依赖,是没有指定具体的依赖版本号的,这是因为SpringBoot使用了Maven的继承,每一个SpringBoot工程都有一个父工程,依赖的版本号,在父工程中统一管理

2.详解

2.1.spring-boot-starter-parent
  • 按住ctrl点击parent中的spring-boot-start-parent可以进入到spring-boot-starter-parent-2.7.14.pom文件,在这个父pom文件中可以看到插件的配置、资源的声明以及Java 版本、编码格式等信息
  • SpringBoot最低支持JDK1.8,这也是因为在父pom中定义的版本就是1.8
2.2.spring-boot-dependencies
  • 在spring-boot-starter-parent-2.7.14.pom文件中,也有一个parent父依赖,在此父pom中可以看到所有依赖的版本定义,以及dependencyManagement、pluginManagement节点,这就是项目依赖可以省略version 的原因

2.3.Maven管理标签

  • properties:在标签内可以把版本号作为变量进行声明,后面dependency中用到版本号时可以用${变量名}的形式代替,这样做的好处在于当版本号发生改变时,只要更新properties标签中的变量就行了,不用更新所有依赖的版本号
  • dependencyManagement:在父工程pom文件中声明依赖,但不引入依赖到项目中。在子工程中用到声明的依赖时,可以不加依赖的版本号,这样可以做到统一管理工程中用到的依赖版本
  • build:描述了如何编译及打包项目,具体的编译和打包工作是通过其中的plugin配置来实现的,Maven的所有操作其根本都是通过插件进行实现的
  • pluginManagement:作用与dependencyManagement一样,也是声明插件但不引入。在子工程中用到声明的插件时,可以不加插件的版本号,这样可以做到统一管理工程中用到的插件版本

3、内嵌Tomcat

1.概述

  • 在前一天我们学习过Web服务器Tomcat,我们知道一个程序想要运行需要放入到Web服务器中。但是我们的SpringBoot工程并没有把程序部署在Tomcat下也能运行,原因就是SpringBoot内嵌了Tomcat服务器

2.详解

  • SpringBoot的起步依赖spring-boot-starter-web中已经引入了Tomcat,那么也就是意味着当前项目是有Tomcat相关功能的,所以在SpringBoot中可以直接使用Tomcat服务器
  • 在SpringBoot项目启动时,其占用的端口号8080就是Tomcat

4、主启动类

  • 当一个类有了@SpringBootApplication这个注解他就是主启动类,SpringBoot就是运行这个类的main方法来启动SpringBoot应用
  • 启动类位置:必须在项目的公司域名下,如果公司域名下有项目包文件夹,那么应该放在项目包文件夹下,也就是保证启动类是所有Java代码的平级或父级
    • cn.itsource.XxxApp
    • cn.itsource.项目包文件夹.XxxApp
  • 启动类命名规则
    • 项目名称+Application
    • 项目名称+App

5、Yml配置文件

1.概述

  • 在SpringBoot项目中我们启动时是使用的Tomcat的默认端口号8080,那么如果我们不想使用默认端口号就需要去配置文件中进行修改
  • SpringBoot的配置文件有三种,优先级最高的是properties,如果内容发生冲突以properties为主,如果内容不冲突那么都生效
    • application.properties
    • application.yaml
    • application.yml
  • 我们使用骨架进行SpringBoot项目创建时会有一个默认的配置文件application.properties,只不过里面是空的,SpringBoot的配置文件存放位置就在resources中

2.详解

2.1.properties写法

  • properties配置文件是以key=value的方式编写配置,编写比较繁杂不建议使用
2.2.Yaml/Yml写法
  • yaml和yml在写法上是一致的,只不过通常我们使用简写yml作为文件后缀
  • 编写规则:yaml/yml编写语法极其严格,如果编写错了会有警告,请时常注意右上角的提示
    • key和value之间除了有冒号在冒号后面还必须有空格:key: value
    • 配置前缀层级关系只能以一个Tab的空格,不能多也不能少
    • key和value都区分大小写,如果是驼峰那么一般是以-代替大写,例如:驼峰contextPath替换为context-path
    • value如果是字符串不需要加双引号
  • 注意:编写错误右上角会有提示,有的时候是误报要注意区别
2.3.Profile多环境支持
  • 什么是多环境支持:就是在项目中编写多套环境的配置,例如
    • dev:开发环境,端口号为8081
    • pro:生产环境,端口号为8082
    • test:测试环境,端口号为8083
  • 为什么需要多环境支持:编写多套环境配置在不同环境中我们可以进行快速切换,而不需要再去修改原有配置,更加高效
  • 方式一:Yml多文档块模式
# 最上面的就是默认配置,默认配置不需要指定profile
server:
  # 设置端口号
  port: 8081
spring:
  profiles:
    # 要启动的环境标识,如果环境标识在下面找不到那么就启动默认配置
    active: dev

# 每套环境中间需要有此分隔符,分隔每套环境
---
server:
  # 设置端口号
  port: 8082
spring:
  config:
    activate:
      on-profile: pro

---
server:
  # 设置端口号
  port: 8083
spring:
  config:
    activate:
      on-profile: test

  • 方式二:多profile文件模式
    • 不同的环境写在不同的Yml文件中,在主yml中进行引用
    • 环境配置文件命名规则:application-{profile}.yml

SpringMVC

2.1.概述

  • 什么是SpringMVC:SpringMVC属于SpringFrameWork的后续产品,SpringMVC是Spring框架中Servlet的一部分
  • SpringBoot中已经封装好了SpringMVC框架,我们只需要导入起步依赖spring-boot-starter-web即可使用
  • SpringMVC中有一个非常重要的Servlet类,叫做DispatcherServlet,这也是SpringMVC的核心功能
  • Spring、SpringMVC、SpringBoot关系如下
2.2.DispatcherServlet

  • SpringBoot封装了Spirng,而在Spring中包含了SpringMVC,SpringMVC提供了一个DispatcherServlet类,称之为核心控制器
  • DispatcherServlet 负责接收页面发送的请求,然后根据执行的规则,将请求再转发给后面的请求处理器Controller,请求处理器处理完请求之后,最终再由DispatcherServlet给浏览器响应数据
  • DispatcherServlet就是SpringMVC框架中提供的一个核心Servlet,专门帮助我们处理请求

2.3.请求&响应对象

  • 浏览器发送请求,会携带请求数据,包括:请求行、请求头;请求到达Tomcat之后,Tomcat会负责解析这些请求数据
  • 然后将解析后的请求数据会传递给Servlet程序的HttpServletRequest对象,那也就意味着 HttpServletRequest 对象就可以获取到请求数据,例如:请求参数、请求IP、请求头信息等等
  • Tomcat还给Servlet程序传递了一个参数 HttpServletResponse,通过这个对象,我们就可以给浏览器设置响应数据

3.接口

  • 控制器类中的方法通常而言我们俗称接口,此接口非Java中定义的接口,是两个不同的东西
    • Java中的接口:是一个类
    • Controller层的接口:是一个请求方法/控制器类方法
  • 例如
    • 前端人员:你把SpringBoot入门接口地址给我一下
    • 后端人员:好的,http://localhost:8080/hello
  • 接口也被称为一个资源:请求后端接口也可以是请求后端资源/访问资源

2、Json数据格式

  • Json数据格式
    • 一个对象:{"key1":"value1","key2":"value2"...}
    • 多个对象:[{"key1":"value1","key2":"value2"...},{"key1":"value1","key2":"value2"...},{"key1":"value1","key2":"value2"...}]
  • 注意:JSON数据格式就是以 "key":value 形式的数据格式,KEY必须 以 "" 包裹起来,并且如果value是字符串也必须以 "" 包裹起来,如果不是字符串那么正常写就可以

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2169426.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Django Web开发基础介绍

概述 Django 是后端Python的 Web 开发框架,主要任务是处理与服务器和数据库相关的事务,模板渲染动态生成网页内容只是其中一部分。 Django 内置了的模板引擎,可以将 HTML 页面与 Python 代码进行分离。模板引擎提供了丰富的模板标签和过滤器…

???Ansible-使用roles

文章目录 一、Ansible的内置的或官方推荐创建的目录及文件介绍roles目录解释1、roles/自定义角色名目录下2、roles/自定义角色名目录/tasks目录下3、roles/自定义角色名目录/handlers目录下4、roles/自定义角色名目录/templates目录下5、roles/自定义项目名目录/files目录下6、…

vscode【实用插件】Notes 便捷做笔记

安装 在 vscode 插件市场的搜索 Notes点 安装 安装成功后,vscode 左侧栏会出现 使用 初次使用 需先选择一个本地目录 重启 vscode 后,得到 切换笔记目录 新建笔记 快捷键为 Alt N 默认会创建 .md 文件 配合插件 Markdown Preview Enhanced 预览 .md…

一文讲清CSS基础之浮动float原理

文章目录 前言1、演示基础代码2、块级元素和行级元素都可以开启浮动,开启后不会独占一行3、块级元素独占一行,如果上方有行级元素则空出行级元素的高度4、开启浮动后元素会脱离文档流,浮动流宽高由内容撑开5、浮动元素的宽高也可以设定6、行内…

华为GaussDB数据库(单机版)在ARM环境下的安装指南

一、软件版本 机器配置:8核16G,CPU: Huawei Kunpeng 920 2.9GHz操作系统:EulerOS 2.8 64bit with ARM数据库版本:GaussDB Kernel 505.1.0 build 44f4fa53 二、部署流程 2.1 新建用户 ① 以omm用户为例,添加一个omm用…

使用C#,MSSQL开发的钢结构加工系统

很久以前的项目,上位机使用C#开发。数据库使用mssql。控制系统选用了三菱PLC,上位机和PLC之间走ModbusTCP通讯协议。 主要功能:读取加工文件(csv格式),导入到数据库,并根据机床刀具规则&#x…

Python | Leetcode Python题解之第438题找到字符串中所有字母异位词

题目: 题解&#xff1a; class Solution:def findAnagrams(self, s: str, p: str) -> List[int]:s_len, p_len len(s), len(p)if s_len < p_len:return []ans []count [0] * 26for i in range(p_len):count[ord(s[i]) - 97] 1count[ord(p[i]) - 97] - 1differ [c !…

Unity 热更新(HybridCLR+Addressable)-创建Addressable资源

三、创建Addressable资源 创建三个文件夹&#xff0c;放Addressable资源&#xff0c;里面对应放程序集&#xff0c;预制体以及场景 拖拽到Addressable Groups对应组中 其中文件名太长&#xff0c;带着路径&#xff0c;可以简化名字 创建一个脚本&#xff0c;对于这个脚本进行一…

在实时语音交互上超过GPT-4o,端到端语音模型Mini-Omni部署

Mini-Omni是清华大学开源的多模态大型语言模型&#xff0c;具备实时语音输入和流式音频输出的能力。 Mini-Omni模型能够一边听、一边说&#xff0c;一边思考&#xff0c;类似于ChatGPT的语言对话模式。 Mini-Omni模型的主要特点是能够直接通过音频模态进行推理&#xff0c;并…

python全栈学习记录(十六)模块与包

模块与包 文章目录 模块与包一、模块1.模块的导入方式2.模块的循环导入问题3.搜索路径与优先级 二、包1.包的使用2.绝对导入与相对导入 三、一般工程的开发目录规范 一、模块 模块是一系列功能的集合体&#xff0c;常见的模块形式&#xff08;自定义模块、第三方模块、内置模块…

重头开始嵌入式第四十三天(硬件 ARM架构 汇编语言)

目录 ARM架构补充 一&#xff0c;程序状态寄存器 二&#xff0c;处理器工作模式 三&#xff0c;异常处理 四&#xff0c;指令流水线 汇编语言 一&#xff0c;什么是汇编 二&#xff0c;汇编怎么编 三&#xff0c;ARM汇编指令集 四&#xff0c;数据处理指令 五&#…

DC00019基于java swing+sqlserver超市商品信息管理系统java项目GUI商品信息管理系统

1、项目功能演示 DC00019基于java swingsqlserver超市商品信息管理系统java项目GUI商品信息管理系统 2、项目功能描述 基于java swingsqlserver超市管理系统功能 1、系统登录 2、员工管理&#xff1a;添加员工、查询员工、所有员工 3、部门管理&#xff1a;添加部门、查询部门…

数据结构 ——— 移除元素(快慢指针)

目录 题目要求 代码实现&#xff08;快慢指针&#xff09; 题目要求 编写函数&#xff0c;给你一个数组 nums 和一个值 val&#xff0c;你需要在 nums 数组 原地 移除所有数值等于 val 的元素&#xff0c;并且返回移除后数组的新长度 不能使用额外的数组空间&#xff0c;要…

SSM的学习(3)

项目的结构: 如下图所示。 对SqlMapConfig.xml的分析&#xff1a; 是主要的配置文件。里面写的是 数据的配置 1:引入jdbc.properties 这个里面写的是 账号和密码等信息&#xff0c;不在写在xml里面了&#xff0c;防止写死! 用的是<properties resource "这个外部…

将图片资源保存到服务器的盘符中

服务类 系统盘符&#xff1a;file-path.disk&#xff08;可能会变&#xff0c;配置配置文件dev中&#xff09;文件根路径&#xff1a;file-path.root-path&#xff08;可能会变&#xff0c;配置配置文件dev中&#xff09;http协议的Nginx的映射前缀&#xff1a;PrefixConstant.…

__问题——解决CLion开发Linux驱动时显示头文件缺失

问题描述&#xff1a; 在使用CLion开发Linux驱动时&#xff0c;需要引入各种头文件&#xff0c;比如<linux/module>、<linux/init>等&#xff0c;但是毫无例外&#xff0c;都会在报错提示文件或文件路径不存在。这在很大程度上限制了CLion的发挥&#xff0c;因为无…

【linux】gdb

&#x1f525;个人主页&#xff1a;Quitecoder &#x1f525;专栏&#xff1a;linux笔记仓 目录 01.gdb使用 01.gdb使用 程序的发布方式有两种&#xff0c;debug模式和release模式Linux gcc/g出来的二进制程序&#xff0c;默认是release模式要使用gdb调试&#xff0c;必须在源…

c语言200例 063 信息查询

大家好&#xff0c;欢迎来到无限大的频道。 今天给大家带来的是c语言200例 题目要求&#xff1a; 从键盘当中输入姓名和电话号&#xff0c;以“#”结束&#xff0c;编程实现输入姓名、查询电话号的功能。 参考代码如下&#xff1a; #include <stdio.h> #include <st…

1.6 判定表

欢迎大家订阅【软件测试】 专栏&#xff0c;开启你的软件测试学习之旅&#xff01; 文章目录 1 基本概念1.1 作用1.2 优点 2 基本组成2.1 条件桩2.2 动作桩2.3 条件项2.4 动作项 3 判定表的结构与规则3.1 规则的生成3.2 动作结果3.3 判定表简化 4 判定表的使用场景4.1 软件测试…

什么是Node.js?

为什么JavaScript可以在浏览器中被执行&#xff1f; 在浏览器中我们加载了一些待执行JS代码&#xff0c;这些字符串要当中一个代码去执行&#xff0c;是因为浏览器中有JavaScript的解析引擎&#xff0c;它的存在我们的代码才能被执行。 不同的浏览器使用不同的javaScript解析引…