Spring Boot Starter 到底是什么?(从0扫盲版)
一、先说人话结论Starter 一组“开箱即用”的依赖 自动配置二、你其实已经一直在用它比如你项目里写过dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId /dependency 这就是一个 Starter三、它帮你做了什么当你引入spring-boot-starter-web你其实自动获得了Spring MVCTomcatJacksonJSON日志框架❗ 如果没有 starter会怎样你要自己一个个加spring-webspring-webmvctomcatjacksonlogback 非常麻烦四、所以 Starter 本质是什么依赖打包 自动配置五、结构拆开看非常关键一个完整 Starter其实分两部分① 依赖部分引入一堆 jar 包② 自动配置部分重点Configuration ConditionalOnClass(...) public class XxxAutoConfiguration { } 这里就是你刚学的ConditionalOnClass六、完整流程你要理解当你写spring-boot-starter-web发生了什么1. 引入 starter2. starter 带来依赖Tomcat / MVC3. Spring Boot 启动4. 加载 AutoConfiguration5. 判断条件Conditional6. 自动创建 Bean7. 你直接能用七、你可以这样理解非常贴合你 Android 类比你肯定秒懂类似 SDKimplementation retrofit 自动帮你网络请求能力JSON解析线程切换 Starter 就是后端版“功能SDK包” 自动初始化八、再说简单点你记这个就够❗ Starter “别人帮你封装好的一套能力包”九、举一个你能理解的例子关键如果你以后写一个ark-redis-starter你想实现引入依赖 → 自动拥有 Redis 能力你就会写① 自动配置Configuration ConditionalOnClass(RedisTemplate.class) public class ArkRedisAutoConfig { Bean public ArkRedisService arkRedisService() { return new ArkRedisService(); } }② 用户只需要dependency artifactIdark-redis-starter/artifactId /dependency 就能直接用Autowired ArkRedisService redisService;十、Starter 解决了什么问题 1. 降低使用成本 不用自己配一堆东西 2. 统一规范 公司内部统一技术方案 3. 插件化能力很高级 引什么依赖 → 启什么功能十一、你现在要不要写 Starter ❌ 不要原因很现实你现在业务链路还在打基础Redis / 事务 / MQ 还在熟悉 写 starter 属于框架开发能力中高级总结一句最重要的话❗Starter 是“让别人用起来很爽”的东西不是你现在要写的东西下一篇做一个极简版 starter手写一个最小 Starter从 0 到能看懂 不讲复杂结构 就让你亲手“做出一个能跑的 starter”你会瞬间彻底理解自动装配ConditionalOnClassstarter 的意义