一、起步依赖

1、是什么

本质上是一个Maven项目对象模型(Project Object Model, POM), 定义了对其他库的传递依赖,这些东西加在一起即支持某项功能。 比如:

  • spring-boot-dependencies
  • ^ spring-boot-parent
  • ^ spring-boot-starters
  • ^ spring-boot-starter-web

spring boot起步依赖的名字具有很大的可读性,一般见到名字就知道其功能。 使用起步依赖 = 起步依赖+依赖的传递依赖(注意:这些依赖的版本是确定好了的, 经过实践验证的可用的,自己不需要再添加), 可以通过$ mvn dependency:tree查看依赖树。

springboot的依赖配置:


利用pom的继承,一处声明,处处使用。在最顶级的spring-boot-dependencies中,使用dependencyManagement让所有子项目引用一个依赖而不用显式的列出版本号,将结构信息,部署信息,共同的依赖信息放置在统一的位置。dependencyManagement只声明依赖,并不真正引入,因此子项目需要通过dependencies引入相关依赖。

2、起步依赖详解

项目构建过程解析
前面提到,Spring Boot构建出来的也是一个Maven项目,可以看下自动生成的pom.xml文件:

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>top.godtm</groupId><artifactId>blog-demo</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>blog-demo</name><description>Demo project for Spring Boot</description><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.0.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

去掉一些必要的配置,可以看到只引入了2个依赖。spring-boot-starter-web和spring-boot-starter-test。spring-boot-starter-test是用于编写测试使用的,可以认为跟项目功能没有直接关系。

结果就是:我们为了编写一个简单的Hello World Web项目,只需要引入一个依赖即可,就这么easy!

关于依赖的版本号
说到起步依赖,还有一个不得不提的好处——版本号管理。

回想以前,当我们需要为项目添加一个新的依赖时是不是挺纠结?

我们不可能对每个引入依赖都了如指掌,很难确定我们选择的版本是否合适,是否会与其他依赖产生冲突,是否是一个存在问题的版本等等。

SpringBoot官方提供的起步依赖都和SpringBoot版本紧密相连,为我们传递的第三方依赖是经过足够测试后敲定下来最合适的版本。

这是一种解脱~

Spring boot——起步依赖相关推荐

  1. Spring Boot 起步依赖

    参考书<Spring Boot实战> 1.Spring Boot起步依赖        Spring项目的依赖管理也很费力.需要决定项目要用哪些库,还要考虑库的版本和其他库的版本不会用冲突 ...

  2. 1. spring boot起步之Hello World【从零开始学Spring Boot】

    转载:http://blog.csdn.net/linxingliang/article/details/51582286 1.1 介绍 自从structs2出现上次的漏洞以后,对spring的关注度 ...

  3. IntelliJ IDEA打开Maven项目,Spring boot所有依赖红名,不可用

    导入外部的springboot项目时,出现报红线,无论怎么刷新maven就是不下载依赖包,情况如下 解决办法: 1)直接去自己的maven仓库,找到Spring boot,然后直接删除下面的文件 2) ...

  4. Spring Boot 一个依赖搞定 session 共享,没有比这更简单的方案了!

    有的人可能会觉得题目有点夸张,其实不夸张,题目没有使用任何修辞手法!认真读完本文,你就知道gblfy说的是对的了! 文章目录 一.背景 二.分析思路 三.实战 1. 创建工程 2. pom.xml 3 ...

  5. SpringBoot 之Spring Boot Starter依赖包及作用

    spring-boot-starter 这是Spring Boot的核心启动器,包含了自动配置.日志和YAML. spring-boot-starter-amqp 通过spring-rabbit来支持 ...

  6. IDEA 创建 Spring Boot 可选依赖说明

    IDEA 创建 Spring Boot 项目时可选依赖说明 一.Developer Tools Spring Native [Experimental] 提供 GraalVM 编译支持,GraalVM ...

  7. Spring boot排除依赖

    排除依赖 Diagrams--Show Dependencies 打开依赖关系图 选中依赖包 右击,Exclude可以直接排除 同时 对应的依赖包下 Pom文件 会删除,对应的依赖关系

  8. idea基于spring boot的依赖分开打包

    idea版本为2018.3.3 1.在菜单栏点击如图所示图标 Project Structure: 2.选择左侧菜单Artificial,然后在右侧点击 + 号按钮,在弹出的菜单中选择JAR -> ...

  9. Spring Boot常见企业开发场景应用、自动配置原理结构分析

    读者应具备: Spring SpringMVC服务器端开发基础 Maven基础 本篇主要介绍Spring Boot在企业开发中常见场景的使用.以及Spring Boot的基本原理结构. 以下为本篇设计 ...

最新文章

  1. django学习笔记【003】创建第一个带有model的app
  2. iOS 导航色差问题解决方案
  3. statistics_level参数的介绍
  4. 云计算与springCloud概念上的区别
  5. Kaggle新上比赛:Google AI发起地域包容性图像识别竞赛
  6. 不用更改注册表就可以更改桌面所在的位置
  7. canvas简单实现动态时钟
  8. 搭建CentOS的本地yum源
  9. 装饰者模式 (decorator pattern)
  10. Python坦克大战源代码
  11. 《Python程序设计(第3版)》课后习题答案
  12. Findbugs使用指南及扫描内容解释
  13. 弘扬优秀传统文化 致敬母爱母教伟大
  14. 基于Bootstrap模板创建门户网站vue项目03
  15. Chrome崩溃重装后仍然无法打开网页的解决方案
  16. 客户端到服务器端的通信过程及原理
  17. SNF开发平台-SNF.CodeGenerator-升级生成BS页面代码-支持视图-数据库配置-快速开发者的利器...
  18. 起名字 - 第二部分
  19. C语言为什么不执行数组下标的有效性检查
  20. 高斯模糊java代码_Java实现高斯模糊算法处理图像

热门文章

  1. 高糊马赛克秒变高清,表情帝:这还是我吗?
  2. 荐书 | 10本书给你计算机大师思维
  3. Excel有哪些需要熟练掌握而很多人不会的技能!
  4. 《SAS编程与数据挖掘商业案例》学习笔记之十四
  5. data:text/html firefox钓鱼,JS DataURL 整理(一)
  6. 苹果cms主动推送php,飞飞cms、海洋cms、苹果cms、maccms百度主动实时自动推送代码...
  7. yaml for java_细数Java项目中用过的配置文件(YAML篇)
  8. java new 面试_java面试30问
  9. 原型链的理解_javascript之快速理解(原型链)
  10. c语言综合模拟测试题答案,【C语言指针模拟测试题_答案】