一、SpringBoot概述
1、SpringBoot的特点
- 创建独立的Spring应用
- 内嵌Web服务器
- 自动starter依赖,简化构建配置
- 自动配置Spring以及第三方功能
- 提供生产级别的监控、健康检查以及外部化配置
- 无代码生成,无需编写xml
- SpringBoot是整合Spring技术栈的一站式框架
- SpringBoot是简化Spring技术栈的开发脚手架
2、快速构建SpringBoot应用
-
创建一个普通的maven工程,导入pom.xml坐标
<!--所有的boot都要引入这个父坐标--> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.5.6</version> </parent> <!--表示开发一个web场景--> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies>
-
编写主程序类
@SpringBootApplication//主程序类,程序的入口 public class MainApplication {//类名叫什么都可以 public static void main(String[] args) { SpringApplication.run(MainApplication.class,args); } }
-
编写控制层方法
//@Controller //@ResponseBody @RestController//该注解相当于 @Controller + @ResponseBody 注解 public class HelloController { @RequestMapping("/hello") public String hello(){ return "Hello SpringBoot2!"; } }
-
测试
http://127.0.0.1:8080/hello --> 结果为 :Hello SpringBoot2!
3、SpringBoot应用打包发布
-
在pom.xml文件中加入
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
-
在命令行控制台中使用
java -jar java_20211030-1.0.jar # 该方式可以运行jar包
4、SpringBoot的依赖管理
-
SpringBoot中父项目做依赖管理
<!--在构建SpringBoot项目时,都要引入该项目--> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.5.6</version> </parent>
-
上述的项目的父项目又是:
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>2.5.6</version> </parent>
-
在该项目中做了大量的版本仲裁
-
几乎声明了开发中常用依赖的版本号,自动版本仲裁机制
-
若自动仲裁的依赖版本不符合条件,可以pom.xml中自定义依赖版本
<!--以Mysql驱动为例:版本仲裁为8版本的,我们修改为5版本的--> <properties> <mysql.version>5.1.2</mysql.version> </properties>
5、SpringBoot的场景启动器
-
以web为例:导入web场景的场景启动器
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies>
-
只要引入对应的starter,这个场景所有的常规依赖,SpringBoot都会自动引入
-
官方场景启动器以:spring-boot-starter-* 命名
-
若自己或第三方开发可以使用*-spring-boot-starter来命名场景启动器
-
官方常见的启动器见:(https://docs.spring.io/spring-boot/docs/current/reference/html/using.html#using.build-systems.starters)
6、自动配置(以web启动器为例)
-
自动配置好Tomcat
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <version>2.5.6</version> <scope>compile</scope> </dependency>
-
自动配置SpringMVC
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>5.3.12</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.3.12</version> <scope>compile</scope> </dependency>
- 引入了SpringMVC全套组件
- 自动配置好SpringMVC常用组件
- 自动配置好web常见功能,例如:字符编码问题,文件上传等
-
默认的包扫描结构
- 主程序所在的包以及下面所在的子包中包含的组件都会默认被扫描进来
- 若自定义包扫描路径可以使用@SpringBootApplication(scanBasePackages=“xx.xx”)
-
按需加载所有自动配置项
-
每一个starter(启动器)都会包含一个spring-boot-starter
-
引入了那些场景那些场景的自动配置才会开启
-
SpringBoot所有的自动配置功能都在spring-boot-autoconfigure中
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-autoconfigure</artifactId> <version>2.5.6</version> <scope>compile</scope> </dependency>
-