SpringBoot基础

参考视频:【狂神说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 包与微服务
  1. SpringBoot 可执行 Jar 包

    SpringBoot 打的 Jar 包可直接独立运行,无需额外安装、配置外部 Tomcat 。只要本地有 JDK 环境,即可通过双击 Jar 包或执行 java -jar xxx.jar 命令启动项目。核心原因是 Jar 包内部内置了 Tomcat 服务器,并集成了项目运行所需的全部依赖与代码,实现 "开箱即用"。

  2. 微服务与 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 类准备阶段

  1. 推断应用类型,判断是普通项目还是 Web 项目

  2. 查找并加载所有可用初始化器,把 SpringBoot 需要的前置准备工具全部准备好

  3. 找出所有应用程序监听器,开启项目运行时的监听、通知机制

  4. 推断并设置 main 方法所在的类,定位到@SpringBootApplication启动类,从这里开始运行整个项目

5.run 方法真正启动阶段

SpringApplication.run() 会完成四项核心工作:

  1. 判断项目类型、准备运行环境

  2. 初始化 Spring 容器,管理所有组件

  3. 加载自动配置SpringMVC、Tomcat 等所有需要的东西

  4. 启动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校验

校验前端传过来的数据是否合法,不合法就直接报错,不进入业务逻辑。

  1. 在实体类字段上加校验注解

    复制代码
     @NotEmpty(message = "姓名不能为空")
     private String name;
     ​
     @Email(message = "邮箱格式不正确")
     private String email;
  2. 在控制器方法上加 @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 个默认生效位置,按优先级从高到低如下:

  1. 项目根目录 /config

  2. 项目根目录

  3. resources /config

  4. 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自动配置原理
  1. 自动配置依靠 @EnableAutoConfiguration 开启

  2. 读取固定文件加载所有配置类

  3. 通过条件注解判断是否生效

  4. 自动装配 Bean,无需手动 XML 配置

三、Web 开发与视图技术

3.1导入静态资源

普通静态文件夹(3 个)

SpringBoot 会自动监控这 3 个目录下的所有静态资源(图片、CSS、JS、HTML 等),放进去就能直接通过浏览器访问:

  1. resources/resources 目录

  2. resources/static 目录

  3. 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:

  • 固定写死的内容 → 不用加

三大表达式

  1. ${msg} 取后端数据

  2. @{/path} 写链接、CSS、JS 路径,/表示静态资源目录

  3. #{key} 国际化多语言

最常用 5 个标签

  1. th:text="${msg}" 显示文本(不解析 HTML)

  2. th:utext="${msg}" 显示 HTML(解析标签)

  3. th:each="user : ${list}" 遍历集合 / 数组

  4. 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");
     }
 }
相关推荐
橙序员小站2 小时前
Harness Engineering:从 OpenClaw 看 AI 助理的基础设施建设
后端·aigc·openai
Amour恋空2 小时前
Java多线程
java·开发语言·python
小胖java2 小时前
高校培养方案制定系统
java·spring
小陈工2 小时前
2026年3月28日技术资讯洞察:5G-A边缘计算落地、低延迟AI推理革命与工业智造新范式
开发语言·人工智能·后端·python·5g·安全·边缘计算
常利兵2 小时前
Spring项目新姿势:Lambda封装Service调用,告别繁琐注入!
java·数据库·spring
sjmaysee3 小时前
Java框架SpringBoot(一)
java·开发语言·spring boot
azhou的代码园3 小时前
基于SpringBoot+微信小程序的图片识别科普系统
spring boot·后端·微信小程序
寒秋花开曾相惜3 小时前
(学习笔记)3.8 指针运算(3.8.3 嵌套的数组& 3.8.4 定长数组)
java·开发语言·笔记·学习·算法
想唱rap3 小时前
Linux线程
java·linux·运维·服务器·开发语言·mysql