### 自动配置Tomcat ○ 引入Tomcat依赖。 ○ 配置Tomcat ```bash <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <version>2.7.13</version> </dependency> ``` ### 自动配好SpringMVC * 引入SpringMVC全套组件 * 自动配好SpringMVC常用组件(功能) `spring-boot-starter-web:` ```bash <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>5.3.28</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.3.28</version> <scope>compile</scope> </dependency> ``` ### 自动配好Web常见功能 * 字符编码问题,文件上传组件等等 * SpringBoot帮我们配置好了所有web开发的常见场景 ### 默认的包结构 * 主程序所在包及其下面的所有子包里面的组件都会被默认扫描进来 如,`MainApplication` 所在包`src/main/java/com/maxiaoke/boot/` 下所有的包都会自动扫描进来,因此我们可以在该package下面建立controller包。 * 无需以前的包扫描配置 * 想要改变扫描路径,@SpringBootApplication(scanBasePackages="com.maxiaoke") * 或者@ComponentScan 指定扫描路径 ### @SpringBootApplication注解 @SpringBootApplication 等同于: ```bash @SpringBootConfiguration @EnableAutoConfiguration @ComponentScan("com.maxiaoke.boot") ``` ### 默认配置和自动配置 ● 各种配置拥有默认值 ○ 默认配置最终都是映射到某个类上,如:MultipartProperties ○ 配置文件的值最终会绑定每个类上,这个类会在容器中创建对象 ● 按需加载所有自动配置项 ○ SpringBoot中有非常多的starter,但这些配置并不是全部都自动启动 ○ 引入了哪些场景这个场景的自动配置才会开启 ○ SpringBoot所有的自动配置功能都在 spring-boot-autoconfigure 包里面 `spring-boot-starter`依赖中引入了`spring-boot-autoconfigure` ```bash <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-autoconfigure</artifactId> <version>2.7.13</version> <scope>compile</scope> </dependency> ``` 查看`spring-boot-autoconfigure`中的内容: ![](https://img.kancloud.cn/3c/95/3c9532557d7d3a2f664f43ed4e527bad_713x509.png =1000x) 这些自动配置默认不生效,当我们引入了该场景后(添加对应依赖),这些类生效。 即,SpringBoot的自动配置是:按需加载。