2021-07-27 spring-boot自动配置的理解

spring-boot自动配置

spring-boot自动配置的意义

第三方框架和spring搭配配置环境时,需要导入及其多的依赖,然后需要三个配置类来分别代替springMVC.xml、applicationContext.xml和web.xml,这三个配置类分别为:
1.继承AbstractAnnotationConfigDispatcherServletInitializer的类,代替web.xml,其中指定根容器的配置类,子容器的配置类,url-pattern和字符编码集过滤器。
2021-07-27 spring-boot自动配置的理解_第1张图片

2.实现WebMvcConfigurer的类,代替springMVC.xml,其中可以配置视图解析器,静态资源,文件上传等。
2021-07-27 spring-boot自动配置的理解_第2张图片
3.还有一个类代替applicationContext.xml,可以设置数据源,事务管理器,SqlSessionFactoryBean等
2021-07-27 spring-boot自动配置的理解_第3张图片
从上述配置中,搭建spring,springMVC,mybatis为一体的环境需要很多操作,且大多数操作都是模板化的,重复性劳动。
所以spring-boot提供了一个自动配置,来简化spring与第三方框架的集成。
spring集成第三方框架的代码可以分为两个部分,一个是重复性劳动,如集成mybatis时,创建SqlSessionFactoryBean对象和return SqlSessionFactoryBean。一个是需要自定义的配置,如设置datasource。spring-boot使用starter依赖来把模板化的配置先配置好,然后利用外化配置文件application.properties/yml,将需要自定义的配置项进行统一管理。

spring-boot自动配置的原理

1.当创建一个spring-boot项目后,spring会以groupId创建一个文件夹,以artifactId加上Application创建一个java文件,作为启动类。类上有注解@SpringBootApplication
2021-07-27 spring-boot自动配置的理解_第4张图片
点击进入@SpringBootApplication注解后,会发现有一个注解**@EnableAutoConfiguration**,该注解的作用是启动自动配置。
2.当spring-boot项目运行时,会对类路径进行扫描,寻找METE-INF/spring.factories文件,以下将用mybatis-spring-boot-starter举例。
2021-07-27 spring-boot自动配置的理解_第5张图片
点击进入spring.factories后可以看到EnableAutoConfiguration=xxx
在这里插入图片描述
xxx就是自动配置类(AutoConfigurationClass),如MybatisAutoConfiguration,点进去后会发现如下
2021-07-27 spring-boot自动配置的理解_第6张图片
在这里插入图片描述
这里就是将spring整合第三方框架的模板化配置在这里进行了,所以MybatisAutoConfiguration实现了自动配置的功能
2021-07-27 spring-boot自动配置的理解_第7张图片
点击进入MybatisProperties类后,会发现在这里插入图片描述

2021-07-27 spring-boot自动配置的理解_第8张图片
所以MybatisProperties类实现了存储外化配置数据,然后spring-boot项目会读取application中的配置,并且将数据注入到MybatisProperties类中。
这样就实现了spring-boot的自动配置,最终spring-boot使用了一个xml文件就能代替ssm需要使用三个配置类的复杂搭配环境。
如要使用自定义starter也可按照上述步骤即可。

你可能感兴趣的:(spring学习笔记,spring,boot)