本文來自網易雲社區
java
在前一篇咱們經過簡單幾步操做就生成了一個能夠直接運行的Web程序,這是由於SpringBoot代替咱們作了許多工做,歸納來說能夠分爲起步依賴和自動配置。這一篇先來看看起步依賴。git
前面提到,Spring Boot構建出來的也是一個Maven項目,能夠看下自動生成的pom.xml文件:github
<?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是用於編寫測試使用的,能夠認爲跟項目功能沒有直接關係。web
結果就是:咱們爲了編寫一個簡單的Hello World Web項目,只須要引入一個依賴便可,就這麼easy!spring
這裏看到的spring-boot-starter-xxx就是SpringBoot的起步依賴。SpringBoot經過提供衆多起步依賴下降項目依賴的複雜度。起步依賴本質上是一個Maven項目對象模型,定義了對其餘庫的傳遞依賴,這些東西加在一塊兒即支持某項功能。不少起步依賴的命名都暗示了他們提供的某種或某類功能。apache
以spring-boot-starter-web爲例,追蹤它的pom文件能夠看到熟悉的東西:json
<?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 Spring MVC. 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。tomcat
說到起步依賴,還有一個不得不提的好處——版本號管理。mvc
回想之前,當咱們須要爲項目添加一個新的依賴時是否是挺糾結?app
咱們不可能對每一個引入依賴都瞭如指掌,很難肯定咱們選擇的版本是否合適,是否會與其餘依賴產生衝突,是不是一個存在問題的版本等等。
SpringBoot官方提供的起步依賴都和SpringBoot版本緊密相連,爲咱們傳遞的第三方依賴是通過足夠測試後敲定下來最合適的版本。
這是一種解脫~
這一章咱們介紹了SpringBoot可以快速構建項目的魔力之一——起步依賴。基於不一樣的功能,官方爲咱們整合了大量的起步依賴,簡化了咱們搭建項目的工做。同時,起步依賴提供了可靠的依賴管理,下降了項目引入問題版本和依賴衝突的風險。
網易雲新用戶大禮包:https://www.163yun.com/gift
本文來自網易雲社區,經做者金港生受權發佈。