请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

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

来源: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回答

同学你好:

    首先需要解释下 <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 回复 有任何疑惑可以回复我~
  • 提问者 量能授官 #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2019-02-14 21:42:52
  • 提问者 量能授官 #2
    老师,我还有个疑问,像ad-gateway模块中没有引用spring-boot-starter-web ,但是 @RestControllerAdvice、@ExceptionHandler 等注解咋也能使用啊?
    回复 有任何疑惑可以回复我~ 2019-02-14 22:47:46
  • 张勤一 回复 提问者 量能授官 #3
    同学你好,ad-gateway 中是没有使用到 @RestControllerAdvice、@ExceptionHandler 注解的。它们只在 ad-common 模块中使用到。ad-gateway 与 ad-common 都是单独的模块,如果 ad-gateway 中的代码包含了 @RestControllerAdvice、@ExceptionHandler,那么就需要引入 spring-boot-starter-web 了。
    回复 有任何疑惑可以回复我~ 2019-02-14 23:03:52
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信