第一章 SpringBoot基础入门
1. Spring与SpringBoot
1.1 Spring能做什么
- 微服务
- 响应式编程
- 云服务
- Web开发
- 无服务(函数式开发)
- 事件驱动
- 批处理
1.2 SpringBoot与Spring关系
SpringBoot简化配置,为高层框架,底层为Spring
依赖关系:SpringBoot-->Spring-->Java
1.3 Spring5重大升级
1.3.1 SpringBoot2响应式编程
-
Servlet Stack
基于Servlet容器,包括传统的Spring MVC等。 -
Reactive Stack
响应式编程,基于Nett,Servlet3.1+容器,包括Spring WebFlux等。
1.3.2 内部源码设计
Spring5基于Java8+版本实现,JDK存在新特性,例如接口的默认实现,适配器模式得以改造,Spring重新设计了源码架构。
1.4 为什么用SpringBoot
快速创建出生产级别的Spring应用
1.4.1 SpringBoot优点
- 创建独立Spring应用
- 内嵌Web服务器
- 自动starter依赖,简化构建配置
- 自动配置Spring以及第三方功能
- 提供生产级别的监控、监控检查以及外部化配置
- 无代码生产、无需编写XML
2. SpringBoot的时代背景
2.1 微服务
- 微服务是一种架构风格
- 一个应用拆分为一组小型服务,
- 每个服务运行在自己的进程内,可独立部署和升级
- 服务之间使用轻量级HTTP交互
- 服务围绕业务功能拆分
- 可以由全自动部署机制独立部署
- 去中心化、服务自治、服务可以使用不同的语言、不同的存储技术
2.2 分布式
2.2.1 分布式的困难
- 远程调用
- 服务发现
- 负载均衡
- 服务容错
- 配置管理、配置中心
- 服务监控
- 链路追踪
- 日志管理
- 任务调度
2.2.2 分布式的解决
- SpringBoot+SpringCloud
2.3 云原生
- 容器
- K8S
- DevOps
3. HelloWord
-
创建maven工程
-
引入依赖
-
创建主程序
-
编写业务
-
测试
直接运行main方法
-
简化配置
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
把项目打成jar包,直接在目标服务器执行即可。
4. 依赖管理特性
-
父项目做依赖管理
依赖管理 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.4.RELEASE</version> </parent> 父项目 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>2.3.4.RELEASE</version> </parent> 几乎声明了所有开发中常用的依赖的版本号,自动版本仲裁机制
-
开发导入starter场景启动器
1、见到很多 spring-boot-starter-* : *就某种场景 2、只要引入starter,这个场景的所有常规需要的依赖我们都自动引入 3、SpringBoot所有支持的场景 https://docs.spring.io/spring-boot/docs/current/reference/html/using-spring-boot.html#using-boot-starter 4、见到的 *-spring-boot-starter: 第三方为我们提供的简化开发的场景启动器 5、所有场景启动器最底层的依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <version>2.3.4.RELEASE</version> <scope>compile</scope> </dependency>
-
无需关注版本号,自动版本仲裁
1、引入依赖默认都可以不写版本 2、引入非版本仲裁的jar,要写版本号
-
自定义修改版本号
1、查看spring-boot-dependencies里面规定当前依赖的版本用的key 2、在当前项目里面重写配置 <properties> <mysql.version>5.1.43</mysql.version> </properties>
5. 自动配置特性
spring-boot-starter-web
-
自动配好Tomcat
- 引入Tomcat依赖
- 配置Tomcat
-
自动配好SpringMVC
-
引入SpringMVC全套组件
-
自动配好SpringMVC常用组件(功能)
-
-
自动配好Web常见功能,如:字符编码问题
- SpringBoot帮我们配置好了所有web开发的常见场景
-
默认的包结构
-
主程序所在包及其下面的所有子包里面的组件都会被默认扫描进来
-
无需以前的包扫描配置
-
想要改变扫描路径,@SpringBootApplication(scanBasePackages="com.test")
-
或者@ComponentScan指定扫描路径
@SpringBootApplication 等同于 @SpringBootConfiguration @EnableAutoConfiguration @ComponentScan("com.test")
-
-
各种配置拥有默认值
- 配置文件的值最终会绑定每个类上,这个类会在容器中创建对象
-
按需加载所有自动配置项
- 引入了哪些场景,这个场景的自动配置才会开启
- SpringBoot所有的自动配置功能都在spring-boot-autoconfigure包里面