- 一、SpringBoot的starter简介 -
1.1 什么是starter(场景启动器)在SpringBoot出现之前,如果我们想使用SpringMVC来构建我们的web项目,必须要做的几件事情如下:
1、首先项目中需要引入SpringMVC的依赖
2、在web.xml中注册SpringMVC的DispatcherServlet,并配置url映射
3、编写springmcv-servlet.xml,在其中配置SpringMVC中几个重要的组件,处理映射器(HandlerMapping)、处理适配器(HandlerAdapter)、视图解析器(ViewResolver)
4、在applicationcontext.xml文件中引入springmvc-servlet.xml文件
…
以上这几步只是配置好了SpringMVC,如果我们还需要与数据库进行交互,就要在application.xml中配置数据库连接池DataSource,如果需要数据库事务,还需要配置TransactionManager…
这就是使用Spring框架开发项目带来的一些的问题:
**依赖导入问题:**每个项目都需要来单独维护自己所依赖的jar包,在项目中使用到什么功能就需要引入什么样的依赖。手动导入依赖容易出错,且无法统一集中管理
**配置繁琐:**在引入依赖之后需要做繁杂的配置,并且这些配置是每个项目来说都是必要的,例如web.xml配置(Listener配置、Filter配置、Servlet配置)、log4j配置、数据库连接池配置等等。这些配置重复且繁杂,在不同的项目中需要进行多次重复开发,这在很大程度上降低了我们的开发效率
而在SpringBoot出现之后,它为我们提供了一个强大的功能来解决上述的两个痛点,这就是SpringBoot的starters(场景启动器)。Spring Boot通过将我们常用的功能场景抽取出来,做成的一系列场景启动器,这些启动器帮我们导入了实现各个功能所需要依赖的全部组件,我们只需要在项目中引入这些starters,相关场景的所有依赖就会全部被导入进来,并且我们可以抛弃繁杂的配置,仅需要通过配置文件来进行少量的配置就可以使用相应的功能。
- 二、SpringBoot场景启动器的原理 -
在导入的starter之后,SpringBoot主要帮我们完成了两件事情:
- 相关组件的自动导入
- 相关组件的自动配置
这两件事情统一称为SpringBoot的自动配置
2.1 自动配置原理2.1.1 自动配置类的获取与注入我们从主程序入口来探索一下整个过程的原理:
@SpringBootApplication //标注这个类是一个springboot的应用
public class CommunityApplication {
public static void main(String[] args) {
//将springboot应用启动
SpringApplication.run(CommunityApplication.class, args);
}
}
@SpringBootApplication注解内部结构如下图所示:
AutoConfigurationImportSelector :重点看该类中重写的selectImports方法,看下它返回的字符串数组是如何得来的: