springboot starter原理总结

1. 关键特性

  • 引入依赖
  • 自动配置

2. 引入依赖

将常用依赖进行组合分类,打包提供给具有相应特性的工程;

"它使用了maven和gradle的依赖传递方案,starter在自己的pom.xml文件中声明了多个依赖。……一个starter可能会传递性地引入几十个依赖。"

starter之间引用依赖传递关系如图:

springboot starter原理总结_第1张图片

3. 自动配置

如果“自动配置类 “探测” 到类路径下存在对应的依赖,就会“配置” 使用这些依赖的工具bean

①.依赖中,依赖有自己对应的自动配置类:xxxAutoConfiguration。例如:对应给它的自动配置类名称:MongoAutoConfiguration;

②. “利用Spring对条件化配置的支持”(即@Condition注解,springboot在此基础上提供了@ConditionalOnClass、@ConditionalOnMissingBean等条件化配置注解),当依赖的“特征”类存在在类路径下,才实例化对应的实现了该依赖必要配置的自动配置类;

还是以MongoAutoConfiguration类为例,它的源码如下:

package org.springframework.boot.autoconfigure.mongo;

import ...

@Configuration
@ConditionalOnClass({MongoClient.class})
@EnableConfigurationProperties({MongoProperties.class})
@ConditionalOnMissingBean(
    type = {"org.springframework.data.mongodb.MongoDbFactory"}
)
public class MongoAutoConfiguration {
    ...
}

③. 所谓依赖即一些列jar包,jar包里存在实现功能相关的class文件;

④. 所谓配置即实例化bean的对象在容器中;(Spring特性:如何创建并配置一个第三方bean的方法,参考:https://blog.csdn.net/coding_sleep/article/details/106391749)

⑤. 以SpringMVC为例,工具类包括:视图解析器、资源处理器以及消息转换器等;

参考:《Spring实战(第4版)》

你可能感兴趣的:(springboot,springboot,starter,原理)