参考视频:【狂神说Java】SpringBoot最新教程IDEA版通俗易懂_哔哩哔哩_bilibili
一、SpringBoot 核心基础
1.1项目创建与清理
使用 IDEA 创建 SpringBoot 项目时,直接通过官方模板生成即可。
项目创建完成后,以下文件 / 文件夹均为辅助文件,不影响项目运行,可以安全删除:
1、.mvn 文件夹+mvnw 文件+ mvnw.cmdw文件: 如果你本地已经装了 Maven,完全可以删掉
2、.gitattributes + .gitignore: Git 版本控制相关配置
3、HELP.md: SpringBoot 自动生成的帮助文档

1.2Jar 包与微服务
-
SpringBoot 可执行 Jar 包
SpringBoot 打的 Jar 包可直接独立运行,无需额外安装、配置外部 Tomcat 。只要本地有 JDK 环境,即可通过双击 Jar 包或执行
java -jar xxx.jar命令启动项目。核心原因是 Jar 包内部内置了 Tomcat 服务器,并集成了项目运行所需的全部依赖与代码,实现 "开箱即用"。 -
微服务与 Jar 包的关系
微服务架构的核心是将大型项目按业务功能拆分为多个独立的小服务 。每个微服务本质上都是一个独立的 SpringBoot 项目 ,最终都会打包成一个可直接运行的 Jar 包。各服务独立部署、独立运行,通过网络协作完成整体业务,实现高内聚、低耦合。
1.3原理初探
1.pom.xml
项目依赖的版本由父工程统一管理,引入依赖时无需指定版本,底层维护了兼容的版本仓库。
2.启动器
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
SpringBoot 将所有功能场景封装为启动器(starter),导入对应 starter 即可自动引入该场景所需全部依赖,实现开箱即用。
3.主程序
@SpringBootApplication 标注主启动类,项目启动时自动扫描并完成自动配置;导入对应 starter 后自动装配生效,无需手动配置。
4.SpringApplication 类 (准备阶段)
-
推断应用类型,判断是普通项目还是 Web 项目
-
查找并加载所有可用初始化器,把 SpringBoot 需要的前置准备工具全部准备好
-
找出所有应用程序监听器,开启项目运行时的监听、通知机制
-
推断并设置 main 方法所在的类,定位到
@SpringBootApplication启动类,从这里开始运行整个项目
5.run 方法 (真正启动阶段)
SpringApplication.run() 会完成四项核心工作:
-
判断项目类型、准备运行环境
-
初始化 Spring 容器,管理所有组件
-
加载自动配置SpringMVC、Tomcat 等所有需要的东西
-
启动Tomcat 服务器,让项目可以直接用浏览器访问。
1.4yaml语法
SpringBoot 使用固定名称 的全局配置文件 application.yml,用于修改 SpringBoot 自动配置的默认值。
YAML 语法以 key: value 格式书写(冒号后必须加空格),对空格要求严格。
它支持对象、数组等数据格式,因此在配置文件给对象赋值:
# 对象写法(包括随机、占位符)
student:
name: xing${random.int}
age: 22${key:default}18
student: {name: xing,age: 22}
# 数组写法
pets:
- cat
- dog
pets: [cat,dog]
yaml还可以给实体类赋值
1、在实体类上添加对应注解,即可自动绑定 YAML 中的同名属性。
2、为了让配置文件编写时有代码提示、不爆红,需要导入依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
常用场景:配置项目端口、数据库连接、路径、自定义参数等。
注意:SpringBoot 在定义类时推荐使用包装类 (如 Boolean),可以区分未配置与 false,更适合配置绑定。
1.5JSR303校验
校验前端传过来的数据是否合法,不合法就直接报错,不进入业务逻辑。
-
在实体类字段上加校验注解
@NotEmpty(message = "姓名不能为空") private String name; @Email(message = "邮箱格式不正确") private String email; -
在控制器方法上加 @Valid 开启校验
public String test(@Valid User user, BindingResult result) { }
常用校验注解(背这几个就够)
-
@NotEmpty(message = "名字不能为空!")不能为 null 且不能为空 -
@NotNull不能为 null -
@NotBlank字符串 不能为空白 -
@Email邮箱格式 -
@Min(value = 18, message = "年龄必须大于等于18") -
@Max
二、自动装配与配置核心
2.1配置文件与多环境
SpringBoot 内置固定的配置加载路径 ,共有 4 个默认生效位置,按优先级从高到低如下:
-
项目根目录 /config
-
项目根目录
-
resources /config
-
resources 目录(最低优先级,最常用)
优先级高的配置会覆盖低优先级的相同配置,可通过优先级实现灵活覆盖。
多环境配置
配置文件命名规则:
-
application-dev.yml(开发环境) -
application-test.yml(测试环境) -
application-prod.yml(生产环境)
在配置文件中激活语句指定用哪个环境:spring.profiles.active=环境名(dev、test、prod)
AML 的分段符---
**作用:**可以把多个环境的配置写在同一个 application.yml 文件里
# 第一段:公共配置
spring:
profiles:
active: dev
---
# 第二段:dev 环境配置
spring:
config:
activate:
on-profile: dev
server:
port: 8081
2.2自动配置原理
-
自动配置依靠
@EnableAutoConfiguration开启 -
读取固定文件加载所有配置类
-
通过条件注解判断是否生效
-
自动装配 Bean,无需手动 XML 配置
三、Web 开发与视图技术
3.1导入静态资源
普通静态文件夹(3 个)
SpringBoot 会自动监控这 3 个目录下的所有静态资源(图片、CSS、JS、HTML 等),放进去就能直接通过浏览器访问:
-
resources/resources目录 -
resources/static目录 -
resources/public目录
浏览器地址栏输 http://localhost:8080/文件名
- 比如
static/js/index.js,访问地址就是localhost:8080/js/index.js
优先级? :resources 最高,static 中间,public 最低
3.2模板引擎 Thymeleaf
SpringBoot 不支持 JSP ,使用 Thymeleaf 替代 JSP,实现页面渲染、数据展示、后台与前端交互。
使用步骤:
1.导入依赖
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring6</artifactId>
</dependency>
2.使用规则
页面存放位置resources/templates/xxx.html
HTML 顶部加 xmlns:th="http://www.thymeleaf.org"
用 @Controller + Model 传数据
3.3Thymeleaf语法
哪里需要用到th语法修改呢?:
-
只要和后端有关 → 必须加 th:
-
只要是路径、链接、取值、循环、判断 → 必须加 th:
-
固定写死的内容 → 不用加
三大表达式
-
${msg}取后端数据 -
@{/path}写链接、CSS、JS 路径,/表示静态资源目录 -
#{key}国际化多语言
最常用 5 个标签
-
th:text="${msg}"显示文本(不解析 HTML) -
th:utext="${msg}"显示 HTML(解析标签) -
th:each="user : ${list}"遍历集合 / 数组 -
th:value="${}"给输入框赋值
三元表达式: <div th:text="${age >= 18} ? '成年' : '未成年'"></div>
实例:
3.4配置类SpringMVC
作用 : 默认的 MVC 功能不够用,在 SpringBoot的配置基础上,自定义扩展功能(如视图跳转、拦截器、资源路径)
新建config文件夹,配置类放到其中
核心写法(@Configuration+继承 WebMvcConfigurer类)
@Configuration
public class MyMvcConfig implements WebMvcConfigurer {
// 自定义视图映射
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("index");
}
}