springboot自动配置
2021-06-27 本文已影响0人
Qiansion齐木楠雄
1、自动配置
springboot自动配置做了哪些事?
自动配好tomcat
引入tomcat依赖,该依赖在spring-boot-starter-web
中
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<version>2.3.4.RELEASE</version>
<scope>compile</scope>
</dependency>
自动配好SpringMVC
引入SpringMVC全套组件
自动配好SpringMVC常用组件(功能)
自动配好Web常见功能,如:字符编码问题
Springboot帮我们配置好了所有web开发的常见场景
默认的包结构
主程序所在的包及其下面所有子包里面的组件都会被默认扫描进来
无需以前的包扫描配置
类似上图这种就无法被扫描出来 TestController1在per包下,而主程序在wqy包下。
如果想要修改springboot默认包扫描路径,需要添加
@SpringBootApplication(scanBasePackages = "per")
也可以使用@ComponentScan
指定扫描路径
@SpringBootApplication(scanBasePackages = "per")
等同于
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan("per")
各种配置拥有的默认值
从下图中我们可以看出springboot给我们提供的一些默认配置
image.png
我们通过Ctrl+左键也可以看到这些属性所绑定的类
比如:
此处我们设置上传文件大小为10MB
image.png
我们可以在类中找到
image.png
所以说,配置文件的值最终会绑定到每个类上,这个类会在容器中创建对象
按需加载所有自动配置项
在springboot中有非常多的starter
引入了哪些场景这个场景的自动配置才会开启
SpringBoot所有的自动配置功能都在spring-boot-autoconfigure
中(它包含在spring-boot-starter-web
中),
在项目的依赖中我们可以看到
这里有很多的自动配置,比如aop自动配置,batch批处理自动配置等等。此处aop的自动配置应该是默认加载的,但是批处理却不是,从它们各自的autoConfiguration中可以看出端倪,这里暂时不做讲解,后面会进行详细说明(了解自动配置的前提是对自动配置的注解的熟悉)。当然,如果要使它们的自动配置生效,导入相关包是必要条件。就如同这里,要使批处理的自动配置生效,我们需要引入批处理的依赖
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-batch -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-batch</artifactId>
<version>2.4.8</version>
</dependency>