SpringBoot 整合MVC 进行 Web 开发
SpringBoot 整合 MyBatis 进行数据库的访问
学习SpringBoot3的前置知识:
Java17
Spring SpringMVC MyBatis
Maven IDEA
环境要求:
一、SpringBoot 简介
SpringBoot 可以帮助我们简单、快速地创建一个独立的、生产级别的 Spring 应用。
只需要编写少量配置就可以快速整合 Spring 平台 和第三方技术
1.1 SpringBoot 的特性:
- 快速创建 独立 Spring 应用
- 直接 嵌入 Servlet 容器【无需部署 War 包】。
- Servlet容器:Tomcat、Jetty(Jetty 是一个开源的servlet容器) or Undertow(是一个采用 Java 开发的灵活的高性能 Web 服务器)
- 直接打包成 jar 包,在 Java 环境下直接运行。
- ⭐提供可选的 starter,简化应用整合
- 场景启动器(starter)
- 开发中常见的场景:web、json、邮件、oss(对象存储)、异步、定时任务、缓存...
- SpringBoot 为每一种场景都准备了一个依赖。比如 web 场景的:web-starter
- ⭐按需自动配置 Spring 以及第三方库
- 如果这些场景我要使用(生效),这个场景的所有配置都会自动配置好。
- 约定大于配置:每个场景都有很多默认的配置
- 自定义:配置文件中修改几项就可以
- 提供生产级特性:如 监控指标、健康检查(看应用是否存活:比如 k8s)、外部化配置等
- 无代码生成,无 xml
1.2 总结:
简化开发、简化配置、简化整合、简化部署、简化监控、简化运维
二、快速体验
场景:浏览器发送 /hello 请求,返回 "Hello,SpringBoot 3!"
2.1 开发流程
根据官方文档来一步一步的操作。
第一步:所有的SpringBoot项目都必须继承自SpringBoot父项目:spring-boot-starter-parent
第二步:导入web场景启动器
第三步:主程序
第四步:编写业务代码
第五步:测试
默认启动访问:localhost:8080
第六步:应用上线 —— 打包
引入打包插件
命令:mvn clean package 把项目打包成可执行的jar包
java -jar demo.jar 启动项目
2.2 特性小结
1、简化整合
引入相关的场景启动器,导入相关场景,然后拥有此场景相关的功能
SpringBoot默认支持的场景有:Developing with Spring Boot
2、简化开发
无需编写任何配置,直接开发业务
3、简化配置 application.properties
-
集中式管理配置,只需修改这个文件就行
-
配置基本都有默认值
-
SpringBoot 能写的所有配置有:Common Application Properties
4、简化部署
所有的SpringBoot 都可以打包成 可执行的 jar 包。
只需要在 Linux 的服务器上有 java 环境就行。
部署:java -jar -名字.jar
5、简化运维
- 修改配置:在外部放一个 application.properties 文件
- 监控
- 健康检查
2.3 Spring Initializr 创建向导 —— 一键创建 SpringBoot 项目
1、使用Spring Initializr 创建SpringBoot 项目
2、导入相关场景启动器
3、一键帮我们创建好项目结构
4、SpringBoot 的默认规则
SpringBoot 只扫描主程序所在的包,及其子包
三、应用分析
SpringBoot底层的两个机制:依赖管理机制和自动配置机制
3.1 依赖管理机制
思考:
1、为什么导入 starter-web 所有相关依赖都导入进来?
- 开发什么场景,导入什么 场景启动器
- maven 依赖传递原则。A ->(依赖)B -> C,A就拥有B和C
- 导入 场景启动器。场景启动器 自动把这个场景的所有核心依赖全部导入进来。
2、为什么版本号都不用写
- 每个 Spring Boot 项目都有一个父项目 spring-boot-starter-parent
- parent 的父项目是 spring-boot-dependencies
- 父项目是 版本仲裁中心,把所有常见的 jar 的依赖版本都声明好了
- 比如:mysql-connector-j
3、自定义版本号
- 利用 maven 的就近原则
4、第三方的 jar 包
-
SpringBoot 父项目没有管理的 jar 包需要自行声明好
-
<dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.2.20</version> </dependency>
3.2 自动配置机制
1、初步理解
- 自动配置的 Tomcat、SpringMVC 等【导入场景,容器中就会自动配置好这个场景的核心组件】
- 以前:DispatcherServlet、ViewResolver、CharacterEncodingFilter...
- 现在:自动配置好的这些组件
- 验证:容器中有了什么组件,就具有什么功能。
- 默认的包扫描规则
-
@SpringBootApplication 标注的类就是主程序类
- SpringBoot 只会扫描主程序所在的包及其下面的子包,自动 component-scan 功能【component :组件】
- 自定义扫描路径:
-
@SpringBootApplication(scanBasePackages = "com.liuwent")
-
@ComponentScan("com.liuwent") 直接指定扫描的路径
-
-
- 配置默认值
- 配置文件 的所有配置项是和某个 类的对象 值进行一 一绑定的
- 绑定了配置文件中每一项值的类:配置属性类(属性类)
- 比如:
- 按需加载自动配置
- 导入场景 spring-boot-starter-web
- 场景启动器除了会导入相关功能依赖
总结:导入场景启动器、触发 spring-boot-autoconfigure 这个包的自动配置生效、容器中就会具有相关场景的功能。