本文来自网易云社区

在前一篇我们通过简单几步操作就生成了一个可以直接运行的Web程序,这是因为SpringBoot代替我们做了许多工作,概括来讲可以分为起步依赖和自动配置。这一篇先来看看起步依赖。

项目构建过程解析

前面提到,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-thymeleaf</artifactId></dependency><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>

去掉一些必要的配置,可以看到只引入了3个依赖。其中spring-boot-starter-thymeleaf是我自己额外引入的可以忽略,那么剩下的就只有spring-boot-starter-web和spring-boot-starter-test了。spring-boot-starter-test是用于编写测试使用的,可以认为跟项目功能没有直接关系。

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

起步依赖

这里看到的spring-boot-starter-xxx就是SpringBoot的起步依赖。SpringBoot通过提供众多起步依赖降低项目依赖的复杂度。起步依赖本质上是一个Maven项目对象模型,定义了对其他库的传递依赖,这些东西加在一起即支持某项功能。很多起步依赖的命名都暗示了他们提供的某种或某类功能。

以spring-boot-starter-web为例,追踪它的pom文件可以看到熟悉的东西:

<?xml version="1.0" encoding="UTF-8"?><project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starters</artifactId><version>2.0.0.RELEASE</version></parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.0.0.RELEASE</version><name>Spring Boot Web Starter</name><description>Starter for building web, including RESTful, applications using SpringMVC. Uses Tomcat as the default embedded container</description><url>https://projects.spring.io/spring-boot/#/spring-boot-parent/spring-boot-starters/spring-boot-starter-web</url><organization><name>Pivotal Software, Inc.</name><url>https://spring.io</url></organization><licenses><license><name>Apache License, Version 2.0</name><url>http://www.apache.org/licenses/LICENSE-2.0</url></license></licenses><developers><developer><name>Pivotal</name><email>info@pivotal.io</email><organization>Pivotal Software, Inc.</organization><organizationUrl>http://www.spring.io</organizationUrl></developer></developers><scm><connection>scm:git:git://github.com/spring-projects/spring-boot.git/spring-boot-starters/spring-boot-starter-web</connection><developerConnection>scm:git:ssh://git@github.com/spring-projects/spring-boot.git/spring-boot-starters/spring-boot-starter-web</developerConnection><url>http://github.com/spring-projects/spring-boot/spring-boot-starters/spring-boot-starter-web</url></scm><issueManagement><system>Github</system><url>https://github.com/spring-projects/spring-boot/issues</url></issueManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId><version>2.0.0.RELEASE</version><scope>compile</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-json</artifactId><version>2.0.0.RELEASE</version><scope>compile</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId><version>2.0.0.RELEASE</version><scope>compile</scope></dependency><dependency><groupId>org.hibernate.validator</groupId><artifactId>hibernate-validator</artifactId><version>6.0.7.Final</version><scope>compile</scope></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>5.0.4.RELEASE</version><scope>compile</scope></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.0.4.RELEASE</version><scope>compile</scope></dependency></dependencies></project>

在这一层已经能看到它为我们传递了spring-web和spring-webmvc。

关于依赖的版本号

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

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

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

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

这是一种解脱~

小结

这一章我们介绍了SpringBoot能够快速构建项目的魔力之一——起步依赖。基于不同的功能,官方为我们整合了大量的起步依赖,简化了我们搭建项目的工作。同时,起步依赖提供了可靠的依赖管理,降低了项目引入问题版本和依赖冲突的风险。

相关阅读:SpringBoot入门(一)——开箱即用

SpringBoot入门(二)——起步依赖

SpringBoot入门(三)——入口类解析

SpringBoot入门(四)——自动配置

SpringBoot入门(五)——自定义配置

网易云新用户大礼包:https://www.163yun.com/gift

本文来自网易云社区,经作者金港生授权发布。

SpringBoot入门(二)——起步依赖相关推荐

  1. springboot 入门二- 读取配置信息一

    在上篇入门中简单介绍下springboot启动使用了大量的默认配置,在实际开发过程中,经常需要启动多个服务,那端口如何手动修改呢? 此篇就是简单介绍相关的配置文件信息. Spring Boot允许外部 ...

  2. SpringBoot入门二

    参考Spring Boot Starters - 御坂研究所 创建自己的starter starter是依赖的一种synthesize(合成). starter会把需要用到的依赖全部包含进来,避免开发 ...

  3. springboot入门笔记

    SpringBoot 文章目录 SpringBoot 1.SpringBoot的四大核心 2.目录结构 3.Springboot集成springmvc 4.核心配置文件 5.多环境下核心配置文件的使用 ...

  4. SpringBoot入门到精通-SpringBoot启动流程(七)

    定义自己的starter SpringBoot入门到精通-Spring的注解编程(一) SpringBoot入门到精通-SpringBoot入门(二) SpringBoot入门到精通-Spring的基 ...

  5. SpringBoot入门建站全系列(二十七)WebSocket做简单的聊天室

    SpringBoot入门建站全系列(二十七)WebSocket做简单的聊天室 一.概述 WebSocket 是一种网络通信协议.RFC6455 定义了它的通信标准. WebSocket 是 HTML5 ...

  6. SpringBoot入门建站全系列(二十八)整合Kafka做日志监控

    SpringBoot入门建站全系列(二十八)整合Kafka做日志监控 一.概述 Apache Kafka是一个分布式发布 - 订阅消息系统和一个强大的队列,可以处理大量的数据,并使您能够将消息从一个端 ...

  7. SpringBoot入门建站全系列(二十六)Mongodb非关系型数据库的使用

    SpringBoot入门建站全系列(二十六)Mongodb非关系型数据库的使用 一.概述 MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能 ...

  8. SpringBoot入门(四)——自动配置

    本文来自网易云社区 SpringBoot之所以能够快速构建项目,得益于它的2个新特性,一个是起步依赖前面已经介绍过,另外一个则是自动配置.起步依赖用于降低项目依赖的复杂度,自动配置负责减少人工配置的工 ...

  9. SpringBoot 入门

    SpringBoot 入门 SpringBoot的特点 解决了复杂的配置,统一依赖管理: // 自动配置.起步依赖.命令行界面.Actuator- 为开发者提供一个非常快速的.广泛接受的入门体验- 开 ...

最新文章

  1. 并发编程 - 协程 - 1.协程概念/2.greenlet模块/3.gevent模块/4.gevent实现并发的套接字通信...
  2. 回复群邮件导致邮件服务器,电子邮件逐个发-邮件群发软件-使用手册
  3. Java学习从入门到精通(1) [转载]
  4. linux sftp自动输入密码,linux下实现sftp自动登录。
  5. 61二叉搜索树的第k个结点
  6. Gartner 企业级网络设备市场份额报告:阿里云负载均衡增速全球第一
  7. Microsoft Operations Framework 4.0
  8. silverlight打开和保存文件
  9. init进程 解析Android启动脚本init.rc 修改它使不启动android init.rc中启动一个sh文件...
  10. 为什么计算机要学电路与电子技术,电路与电子技术基础(计算机科学与技术面向新工科专业建设计算机系列教材)...
  11. 实例总结C#反射基础知识
  12. linux监控工具gotop
  13. 装mysql电脑网卡不见了_电脑本地连接不见了,教您怎么解决
  14. beego框架:static目录下的apk文件浏览器下载使用正常,手机浏览器下载无法解析安装
  15. 时间序列平稳性检验—R语言KPSS检验
  16. 元宇宙持续火爆,各地纷纷布局元宇宙
  17. SIP协议详解(中文)-6
  18. 【Cxinny】微信小程序笔记
  19. STARK代码详细学习笔记
  20. Java版KTV预定管理系统源码

热门文章

  1. 基于Google排名因素对Drupal进行SEO优化
  2. Spring中加载xml配置文件的六种方式
  3. firefox+firebug
  4. 让我们带着感恩的心生活
  5. 程序人生:外链建设流程与细节都有哪些
  6. js经典试题之ES6
  7. HttpWebRequest下载文件,乱码问题解决方案
  8. Ioc 控制反转 实例
  9. 利用Windows Server Backup备份数据进行域控裸机还原
  10. Ubuntu10下MySQL搭建Amoeba_读写分离