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

springboot特点

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

springboot核心功能

  • 起步依赖:

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

  • 自动配置:

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

起步依赖原理

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

自动配置原理

找到springboot的启动类。
在这里插入图片描述
点击这个注解进去。
在这里插入图片描述
这三个注解的意思是表明这个类是个配置类,并且允许自动配置,默认配置扫描包。
点击@EnableAutoConfiguration 进去。
在这里插入图片描述
这个注解表示,引入了其他的配置类。那我们继续点开AutoConfigurationImportSelector.class看。
在这里插入图片描述
找到类里面的这个方法,可以看到我圈出来的那行,是表示获取配置的集合的。

在这里插入图片描述
找到这个方法,发现,它是去找当前包下的META-INF/spring.factories 这个文件的。也就是这个包下。
在这里插入图片描述
在这里插入图片描述
可以看到这个文件里面配置了很多的键值对。所以自动配置就是读取了这个文件的信息。我们都知道,如果springboot不指定端口默认监听的是8080。我们可以看一下它这个是在哪里自动给我们配置的。
在这个spring.factories文件中,找到ServletWebServerFactoryAutoConfiguration
在这里插入图片描述

然后打开这个类。
在这里插入图片描述
这个地方又引入了一个ServerProperties.class,继续点进去看下。
在这里插入图片描述
其实这个注解就可以相当于我们的spring.properties配置文件了,大概是这个意思,意思就是配置了个server.port,然后他默认的值在哪里呢。打开这个文件
在这里插入图片描述
在这里插入图片描述
可以看到默认的配置就在这里了。

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

发布了41 篇原创文章 · 获赞 9 · 访问量 2529

猜你喜欢

转载自blog.csdn.net/weiwei_six/article/details/103730943