SpringBoot3全栈开发实战:从入门到精通的完整指南

SpringBoot3全栈开发实战:从入门到精通的完整指南

文章目录

📝 引言
SpringBoot3作为Spring框架的最新版本,带来了许多令人兴奋的新特性和改进
本文是基于之前的内容来写的
这篇文章是SpringBoot3的总结,适合想快速复习的读者
最后的思维导图总结,能够让你眼前一亮
个人主页:艺杯羹
系列专栏:SpringBoot3

1. SpringBoot3概述🎯

1.1 SpringBoot3的特点与优势

SpringBoot3在SpringBoot2的基础上进行了重大改进,主要特点包括:

  • 自动配置:自动提供最优配置,可修改默认值
  • 起步依赖:将功能所需坐标打包,简化依赖管理
  • 嵌入式服务器:内置Tomcat,无需部署War文件
  • 非功能特性:提供安全指标、健康监测等企业级功能

1.2 SpringBoot3的系统要求

工具版本要求
IDEA2021.2.1+
Java17+
Maven3.5+
Tomcat10.0+
Servlet5.0+
GraalVMCommunity 22.3+
Native Build Tools0.9.19+

2. SpringBoot3入门指南🛠️

2.1 项目搭建方式

2.1.1 官网搭建

访问 start.spring.io 生成项目,选择合适版本和依赖。

2.1.2 IDEA脚手架搭建

在IDEA中选择"Spring Initializr",配置项目信息和依赖。

2.1.3 Maven手动搭建

<!-- 父工程 --><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.1.2</version></parent><!-- 起步依赖 --><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies><!-- 打包插件 --><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>

2.2 项目结构解析

src.main.java # Java代码 └── 启动类 # 项目入口 src.main.resources # 配置和资源文件 ├── static # 静态资源(css, js, img) ├── templates # 模板文件(Thymeleaf) └── application.yml # 配置文件 src.test.java # 测试代码 pom.xml # Maven配置 

3. 核心功能详解⚙️

3.1 YAML配置文件

3.1.1 基本语法

# 简单数据email: [email protected] # 对象数据my1:email: [email protected] password: yibeigen # 集合数据city1:- beijing - shanghai - tianjin 

3.1.2 配置读取方式

// @Value方式@Value("${email}")privateString email;// @ConfigurationProperties方式@ConfigurationProperties(prefix ="user")publicclassUserConfig{privateint id;privateString username;// getters and setters}

3.2 Web开发整合

3.2.1 Servlet注册

// 方式一:注解方式@WebServlet("/first")publicclassFirstServletextendsHttpServlet{publicvoiddoGet(HttpServletRequest request,HttpServletResponse response){System.out.println("First Servlet");}}// 方式二:配置类方式@ConfigurationpublicclassServletConfig{@BeanpublicServletRegistrationBeangetServletRegistrationBean(){returnnewServletRegistrationBean(newSecondServlet(),"/second");}}

3.2.2 Thymeleaf模板引擎

<!DOCTYPEhtml><htmlxmlns:th="http://www.thymeleaf.org"><head><title>Thymeleaf示例</title></head><body><h2th:text="${msg}">默认值</h2><!-- 条件判断 --><divth:if="${sex} == '男'">性别:男</div><divth:if="${sex} == '女'">性别:女</div><!-- 循环遍历 --><table><trth:each="user : ${users}"><tdth:text="${user.name}"></td><tdth:text="${user.age}"></td></tr></table></body></html>

3.3 MyBatis整合

// Mapper接口@MapperpublicinterfaceStudentMapperextendsBaseMapper<Student>{@Select("select * from student where id = #{id}")StudentfindById(int id);}// 配置文件 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql:///student?serverTimezone=UTC spring.datasource.username=root spring.datasource.password=root mybatis.mapper-locations=classpath:mapper/*.xml mybatis.type-aliases-package=com.itbaizhan.springbootmybatis.pojo 

4. 高级特性应用🚀

4.1 热部署

添加DevTools依赖:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional></dependency>

4.2 定时任务

@ComponentpublicclassMyTask{@Scheduled(cron="0 0 2 * * ?")// 每天凌晨2点执行publicvoidtask1(){System.out.println("定时任务执行: "+newDate());}}@SpringBootApplication@EnableSchedulingpublicclassDemoApplication{publicstaticvoidmain(String[] args){SpringApplication.run(DemoApplication.class, args);}}

4.3 内容协商

@ControllerpublicclassConsultController{@AutowiredprivateStudentMapper studentMapper;@RequestMapping("/student/findById")@ResponseBodypublicStudentfindById(Integer id){return studentMapper.findById(id);}}

5. 监控与部署📊

5.1 Actuator监控

添加依赖:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency>

配置:

management:endpoints:web:exposure:include:'*'

访问端点:

  • /actuator/health - 健康检查
  • /actuator/metrics - 系统指标
  • /actuator/loggers - 日志管理

5.2 Spring Boot Admin

5.2.1 服务端配置

<dependency><groupId>de.codecentric</groupId><artifactId>spring-boot-admin-starter-server</artifactId><version>3.1.3</version></dependency>

5.2.2 客户端配置

<dependency><groupId>de.codecentric</groupId><artifactId>spring-boot-admin-starter-client</artifactId><version>3.1.3</version></dependency> spring.boot.admin.client.url=http://localhost:9090 

5.3 多环境部署

# application-dev.ymlserver:port:8080# application-test.ymlserver:port:8081# application-prod.ymlserver:port:80

运行时指定环境:

java -jar app.jar --spring.profiles.active=prod 

6. 原理分析🔍

6.1 起步依赖原理

SpringBoot的起步依赖通过spring-boot-starter-parent实现版本管理和依赖传递。

6.2 自动配置原理

@SpringBootApplication注解等同于:

@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan

7. SpringBoot3新特性🌟

7.1 ProblemDetails

处理异常的新方式,符合RFC 7807规范:

spring.mvc.problemdetails.enabled=true

7.2 原生镜像

使用GraalVM生成原生可执行文件:

<profiles><profile><id>native</id><properties><repackage.classifier>exec</repackage.classifier><native-buildtools.version>0.9.19</native-buildtools.version></properties><build><plugins><plugin><groupId>org.graalvm.buildtools</groupId><artifactId>native-maven-plugin</artifactId></plugin></plugins></build></profile></profiles>

8. 实用工具🛠️

8.1 Lombok

简化POJO代码:

@Data@NoArgsConstructor@AllArgsConstructorpublicclassUser{privateInteger id;privateString username;privateString password;}

8.2 MyBatisPlus

增强MyBatis功能:

@TableName("tb_student")publicclassStudentextendsModel<Student>{@TableId(value ="sid", type =IdType.AUTO)privateInteger id;@TableField("sname")privateString name;// CRUD操作 student.insert(); student.updateById(); student.selectById();}

9. 思维导图总结💎

在这里插入图片描述


tips:如果需要Markdown格式的文件,可以来联系我哦!
制作不易,希望大家支持!😊

Read more

Python从0到100(九十四):深度可分离卷积的深入解析及在OPPORTUNITY数据集上的实战

Python从0到100(九十四):深度可分离卷积的深入解析及在OPPORTUNITY数据集上的实战

前言:零基础学Python:Python从0到100最新最全教程。 想做这件事情很久了,这次我更新了自己所写过的所有博客,汇集成了Python从0到100,共一百节课,帮助大家一个月时间里从零基础到学习Python基础语法、Python爬虫、Web开发、 计算机视觉、机器学习、神经网络以及人工智能相关知识,成为学业升学和工作就业的先行者! 【优惠信息】 • 新专栏订阅前500名享9.9元优惠 • 订阅量破500后价格上涨至19.9元 • 订阅本专栏可免费加入粉丝福利群,享受: - 所有问题解答 -专属福利领取 欢迎大家订阅专栏:零基础学Python:Python从0到100最新最全教程! 本文目录: * 一、深度可分离卷积的基础原理 * 1. 传统卷积的痛点 * 2. 深度可分离卷积的核心思路 * 二、深度可分离卷积的架构 * 1. 输入层 * 2. 深度可分离卷积模块 * 2.1 深度卷积(Depthwise Convolution) * 2.2 点卷积(Pointwise Convolution)

By Ne0inhk
pyproject.toml 完全指南:Python 项目配置的现代化之路

pyproject.toml 完全指南:Python 项目配置的现代化之路

pyproject.toml 完全指南:Python 项目配置的现代化之路 前言 如果你刚接触 Python 项目开发,可能会发现很多开源项目的根目录下都有一个 pyproject.toml 文件。它是什么?为什么需要它?本文将从零开始,带你全面了解这个 Python 生态中的"配置中枢"。 一、什么是 pyproject.toml? 1.1 定义 pyproject.toml 是 Python 项目的标准化配置文件,采用 TOML (Tom’s Obvious Minimal Language) 格式编写。它在 2016 年通过 PEP 518 被引入 Python 生态。

By Ne0inhk

双重机器学习之因果推断 | CATE条件平均处理效应估计:五大方法原理详解与模拟数据实战(python版)

家人们我又更新了,代码和科研绘图在论文末尾,欢迎大家评论点赞和收藏,你们的认可是我坚持的动力,祝大家科研顺利。 因果推断 | CATE条件平均处理效应估计:五大方法原理详解与模拟数据实战 本文是因果推断系列文章。本篇聚焦 CATE(Conditional Average Treatment Effect,条件平均处理效应) 的估计,从ATE的局限性讲起,深入介绍S-Learner、T-Learner、X-Learner、因果森林DML和线性DML五种主流方法的原理,并在模拟数据上进行完整的代码实操与效果对比。 1 从ATE到CATE:为什么需要异质性处理效应? 1.1 ATE只能回答"平均有没有用" ATE(Average Treatment Effect)回答的是:干预措施对整个群体的平均效果是什么? 但在实际业务中,我们更想知道的是:对于不同的个体或子群,干预效果有什么不同? 举几个例子: * 精准营销:给所有人发满减券ATE为正,但拆开看,高消费用户根本不需要券,低消费用户反而是增量用户——CATE帮你找到真正的增量人群。 * 个性化医疗:

By Ne0inhk