springboot起步依赖和自动配置原理分析

springboot特点

  • 可以使基于spring开发的效率更快
  • 无需XML配置,可以自己修改默认值配置
  • 提供了一些大型项目中常见的非功能性特性,比如嵌入式服务器、健康监测、外部配置等。

springboot核心功能

  • 起步依赖:

    起步依赖本质是一个maven项目模型,定义了一下其他库的传递依赖,这些依赖加起来支撑着某项功能。

  • 自动配置:

    在spring运行时,自动考虑项目需要的配置,该过程是spring自动完成的

起步依赖原理

打开pom.xml文件,随便找个starter。
在这里插入图片描述
点进去就到这个文件了。
springboot起步依赖和自动配置原理分析_第1张图片
可以看到,其实starter内部就是定义了许多的dependency(依赖),这也就说明了,为什么我们只需要在主pom文件中引入web的starter,他就可以自动帮我们导入这么多需要的依赖了。

自动配置原理

找到springboot的启动类。
springboot起步依赖和自动配置原理分析_第2张图片
点击这个注解进去。
springboot起步依赖和自动配置原理分析_第3张图片
这三个注解的意思是表明这个类是个配置类,并且允许自动配置,默认配置扫描包。
点击@EnableAutoConfiguration 进去。
springboot起步依赖和自动配置原理分析_第4张图片
这个注解表示,引入了其他的配置类。那我们继续点开AutoConfigurationImportSelector.class看。
springboot起步依赖和自动配置原理分析_第5张图片
找到类里面的这个方法,可以看到我圈出来的那行,是表示获取配置的集合的。

springboot起步依赖和自动配置原理分析_第6张图片
找到这个方法,发现,它是去找当前包下的META-INF/spring.factories 这个文件的。也就是这个包下。
springboot起步依赖和自动配置原理分析_第7张图片

可以看到这个文件里面配置了很多的键值对。所以自动配置就是读取了这个文件的信息。我们都知道,如果springboot不指定端口默认监听的是8080。我们可以看一下它这个是在哪里自动给我们配置的。
在这个spring.factories文件中,找到ServletWebServerFactoryAutoConfiguration
springboot起步依赖和自动配置原理分析_第8张图片

然后打开这个类。
springboot起步依赖和自动配置原理分析_第9张图片
这个地方又引入了一个ServerProperties.class,继续点进去看下。
springboot起步依赖和自动配置原理分析_第10张图片
其实这个注解就可以相当于我们的spring.properties配置文件了,大概是这个意思,意思就是配置了个server.port,然后他默认的值在哪里呢。打开这个文件
springboot起步依赖和自动配置原理分析_第11张图片
springboot起步依赖和自动配置原理分析_第12张图片
可以看到默认的配置就在这里了。

总结一下:其实所谓自动配置,就是通过配置类去读取org.springframework.boot.autoconfigure下的META-INF下的spring.factories 文件的。

你可能感兴趣的:(springboot,spring,spring,boot)