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开发的常见场景

默认的包结构

主程序所在的包及其下面所有子包里面的组件都会被默认扫描进来
无需以前的包扫描配置

image.png
类似上图这种就无法被扫描出来 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中),
在项目的依赖中我们可以看到

image.png
这里有很多的自动配置,比如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>
上一篇下一篇

猜你喜欢

热点阅读