Spring Boot: 开发web 应用 - 03 Spring Framework 回顾

本文通过实例解析Spring框架中不同模块间的依赖关系,展示了如何理解和验证这些依赖,并解释了条件注解的作用。

回顾Spring Framework

Overview of Spring Framework

手绘了完整版的依赖关系。(发现问题还望大家指出)
完整版依赖

简化版的依赖关系。

简化版依赖关系

结合Overview of Spring Framework 来更好的理解 Spring Framework。

关于依赖的理解

Example

module A 中有类引用了Module B 中的class。 A依赖B吗(A -> B) ?
大部分的情况是这个样子的。。。
打开两节的项目,我们可以看到spring-boot-starter-web 帮助我们引入了如下的module:

spring-boot-starter-web -> spring-boot-starter -> spring-boot-autoconfigure -> spring-boot

可以看出spring-boot-autoconfigure只依赖于spring-boot 模块。(spring-boot 仅依赖于spring-core和spring-context)
打开spring-boot-autoconfigure-1.5.4.RELEASE-sources.jar 文件查看其中的代码: 比如:WebMvcAutoConfiguration 可以发现这个类引入了很多的spring-web 及其他module的class。 (从上面的推理来看spring-boot-autoconfigure并不依赖于spring-web)

验证

新建一个Spring Boot的项目, 只选择JPA 一个Dependency, 通过pom.xml 的视图查看Resolved Dependencies 可以看到spring-boot-autoconfigure被引入,而spring-web没有被引入。

Why

WebMvcAutoConfiguration 中的如下注解决定了只有web application,这个类才会被load进来。

@ConditionalOnWebApplication
@ConditionalOnClass({ Servlet.class, DispatcherServlet.class,
        WebMvcConfigurerAdapter.class })

Conditional 相关注解不在这一篇幅深入探究。

[INFO] +- org.springframework.boot:spring-boot-starter-websocket:jar:2.2.5.RELEASE:compile [INFO] +- org.springframework.boot:spring-boot-starter-web:jar:2.2.5.RELEASE:compile [INFO] | +- org.springframework.boot:spring-boot-starter-json:jar:2.2.5.RELEASE:compile [INFO] | +- org.springframework.boot:spring-boot-starter-tomcat:jar:2.2.5.RELEASE:compile [INFO] | +- org.springframework.boot:spring-boot-starter-validation:jar:2.2.5.RELEASE:compile [INFO] +- org.springframework.boot:spring-boot-starter:jar:2.2.5.RELEASE:compile [INFO] | +- org.springframework.boot:spring-boot:jar:2.2.5.RELEASE:compile [INFO] | +- org.springframework.boot:spring-boot-autoconfigure:jar:2.2.5.RELEASE:compile [INFO] | +- org.springframework.boot:spring-boot-starter-logging:jar:2.2.5.RELEASE:compile [INFO] +- org.springframework.boot:spring-boot-devtools:jar:2.2.5.RELEASE:compile (optional) [INFO] +- org.springframework.boot:spring-boot-starter-data-jpa:jar:2.2.5.RELEASE:compile [INFO] | +- org.springframework.boot:spring-boot-starter-aop:jar:2.2.5.RELEASE:compile [INFO] | +- org.springframework.boot:spring-boot-starter-jdbc:jar:2.2.5.RELEASE:compile [INFO] +- org.springframework.boot:spring-boot-starter-data-redis:jar:2.2.5.RELEASE:compile [INFO] +- com.alibaba:druid-spring-boot-starter:jar:1.2.8:compile [INFO] +- org.springframework.boot:spring-boot-starter-test:jar:2.2.5.RELEASE:test [INFO] | +- org.springframework.boot:spring-boot-test:jar:2.2.5.RELEASE:test [INFO] | +- org.springframework.boot:spring-boot-test-autoconfigure:jar:2.2.5.RELEASE:test
最新发布
03-17
<think>好的,用户现在发了一个关于Spring Boot依赖树的日志,询问如何查看版本。之前我已经回答过五种方法,用户可能现在遇到了具体的依赖树,需要进一步确认版本信息。 首先,用户提供的日志中有多行依赖项,每个都带有版本号2.2.5.RELEASE。我需要指出这些信息都一致,说明整个项目使用的是Spring Boot 2.2.5版本。需要确认用户是否理解如何从这些行中提取版本号,或者是否存在疑问。 其次,用户可能想知道为什么所有模块的版本都相同,是否需要检查是否有不一致的地方。这里需要解释Maven或Gradle的依赖管理机制,父POM如何统一版本,确保各模块版本一致,避免冲突。 另外,用户可能对2.2.5.RELEASE这个版本的状态有疑问,比如是否过时,是否需要升级。这时候可能需要提供版本的生命周期信息,比如该版本是否还在维护,是否有安全漏洞需要处理。 还要注意用户之前提到过JDK版本的问题,可能在使用过程中遇到兼容性问题,比如Spring Boot 2.2.5对应的JDK版本是什么,是否支持用户当前的环境。需要结合之前的交流,给出兼容性建议。 另外,用户提供的依赖树中有一些starter,比如websocket、web、data-jpa、data-redis等,可能需要提醒用户检查这些依赖是否都是项目需要的,避免引入不必要的库,增加项目体积。 最后,用户可能想确认是否有更好的方法来验证版本,比如使用Maven命令或者代码中获取版本号,是否需要进一步的步骤来确保版本正确无误。需要总结关键点,确保用户能够明确版本信息,并了解后续行动的建议。</think>--- ### **分析结果与关键信息提取** #### **1. Spring Boot 版本确认** 从您提供的依赖树中,所有Spring Boot组件版本均显示为 `2.2.5.RELEASE`: ```text [INFO] +- org.springframework.boot:spring-boot-starter-websocket:jar:2.2.5.RELEASE:compile [INFO] +- org.springframework.boot:spring-boot-starter-web:jar:2.2.5.RELEASE:compile ...(其他依赖项均使用相同版本) ``` **结论**:当前项目使用的 **Spring Boot 版本为 `2.2.5.RELEASE`**。 --- #### **2. 版本统一性验证** 所有Spring Boot相关依赖(如`spring-boot-starter-web`、`spring-boot-starter-data-jpa`等)均保持版本一致(`2.2.5.RELEASE`),说明项目中已正确通过 **父POM继承** 或 **依赖管理模块** 统一管理版本,避免了依赖冲突。 --- #### **3. 版本生命周期与兼容性参考** | Spring Boot 版本 | 发布日期 | 官方维护状态 | 兼容JDK范围 | |-------------------|-------------|---------------------|------------------| | 2.2.5.RELEASE | 2020-02-20 | **已结束支持**(EOL)| JDK 8-13 | **关键建议**: - ❗️ 此版本已超过官方维护周期(Spring Boot 2.2.x 的维护已于 2020-08-20 结束),**存在安全风险**。 - 推荐升级至 **Spring Boot 2.7.x(L
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值