问题
为什么开发web项目,spring-boot-starter-web 一个jar就搞定了?这个jar做了什么?
通过 spring-boot 工程可以看到所有开箱即用的的引导模块 spring-boot-starter-xxx 都在 spring-boot-starters 子模块中,且所有的 spring-boot-starter-xxx 模块中都没有代码,都是在其他包中就完成对应的功能。首先,分析其依赖
依赖
注意:图中的 Jakarta.xxxx 包是原来的 javax.xxxx 包,Java EE 改名为 Jakarta EE 了,spring-boot-starter-web-2.1.8.RELEASE 版本是直接依赖于hibernate-validator,spring-boot-2.2.0 版本开始使用的是 Jakarta,并用一个新模块 spring-boot-starter-validation 来管理
从依赖图中可以看到,最核心的 spring-boot 依赖于 spring-context 和 spring-