springboot starter原理总结

1. 关键特性

  • 引入依赖
  • 自动配置

2. 引入依赖

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

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

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

3. 自动配置

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

①. 在<spring-boot-autoconfigure>依赖中,依赖有自己对应的自动配置类:xxxAutoConfiguration。例如:<spring-boot-starter-data-mongodb>对应给它的自动配置类名称: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版)》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值