ad-common模块中关于引入spring-boot-starter-web依赖的疑惑

来源:4-2 【跟我一起编码】统一响应处理的开发

量能授官

2019-02-14

来源:ad-common模块中为什么还要添加spring-boot-starter-web的依赖,不是在imooc-ad-spring-cloud(根目录)中已经添加了依赖吗?

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.2.RELEASE</version>
    </parent>

做法:ad-common模块中删除spring-boot-starter-web的依赖,此模块中使用到springboot中的注解无法找到来源。
问题:ad-common模块不能使用imooc-ad-spring-cloud下引入的springboot包吗?ad-common模块中spring-boot-starter-web未曾指定版本,为啥跟imooc-ad-spring-cloud中spring-boot-starter-parent的版本一致?

写回答

1回答

张勤一

2019-02-14

同学你好:

    首先需要解释下 <parent></parent> 标签,这个标签用来定义要继承的父 pom 的信息,它用来定义SpringBoot 项目可能用到的依赖和插件声明以及一些资源文件声明,这样我们就可以在自己的 SpringBoot 项目中用到这些依赖或者插件的时候直接引用,而不用指定版本号。例如:spring-boot-starter-web、spring-boot-starter-test 依赖、spring-boot-maven-plugin 插件。

    spring-boot-starter-parent 是 SpringBoot 项目的父级依赖,指定了 parent 之后,当前的项目就是 SpringBoot 项目了。spring-boot-starter-parent 是一个特殊的 starter,它用来提供相关的 Maven 默认依赖,使用它之后,常用的包依赖可以省去 version 标签。

    spring-boot-starter-web 是 SpringBoot 项目中的一个模块,由于在 imooc-ad-spring-cloud 中指定了 parent(SpringBoot 的父级依赖),所以,可以不需要在 ad-common 中指定 starter-web 的版本。

    在 ad-common 模块中引用 spring-boot-starter-web 是因为使用到 @RestControllerAdvice、@ExceptionHandler 等注解或类文件。


    欢迎来 QQ 群随时交流、讨论,也非常感谢同学的支持! 


1
7
张勤一
回复
幕布斯1098637
如果父模块中已经有了对应的 jar 包依赖,子模块中肯定就不需要的。可以学习下 Maven 的依赖管理规则。
2019-06-12
共7条回复

Spring Cloud微服务架构 设计实现广告系统

广告营销系统,未来大中型企业的标配

2136 学习 · 927 问题

查看课程