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

本文来自网易云社区

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

项目构建过程解析

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


    4.0.0

    top.godtm
    blog-demo
    0.0.1-SNAPSHOT
    jar

    blog-demo
    Demo project for Spring Boot

    
        org.springframework.boot
        spring-boot-starter-parent
        2.0.0.RELEASE
         
    

    
        UTF-8
        UTF-8
        1.8
    

    
        
            org.springframework.boot
            spring-boot-starter-thymeleaf
        
        
            org.springframework.boot
            spring-boot-starter-web
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    

去掉一些必要的配置,可以看到只引入了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文件可以看到熟悉的东西:


  4.0.0
  
    org.springframework.boot
    spring-boot-starters
    2.0.0.RELEASE
  
  
  
   
    org.springframework.boot
  spring-boot-starter-web
  2.0.0.RELEASE
  Spring Boot Web Starter
  Starter for building web, including RESTful, applications using Spring
        MVC. Uses Tomcat as the default embedded container
  https://projects.spring.io/spring-boot/#/spring-boot-parent/spring-boot-starters/spring-boot-starter-web
  
    Pivotal Software, Inc.
    https://spring.io
  
  
    
      Apache License, Version 2.0
      http://www.apache.org/licenses/LICENSE-2.0
    
  
  
    
      Pivotal
      [email protected]
      Pivotal Software, Inc.
      http://www.spring.io
    
  
  
    scm:git:git://github.com/spring-projects/spring-boot.git/spring-boot-starters/spring-boot-starter-web
    scm:git:ssh://[email protected]/spring-projects/spring-boot.git/spring-boot-starters/spring-boot-starter-web
    http://github.com/spring-projects/spring-boot/spring-boot-starters/spring-boot-starter-web
  
  
    Github
    https://github.com/spring-projects/spring-boot/issues
  
  
    
      org.springframework.boot
      spring-boot-starter
      2.0.0.RELEASE
      compile
    
    
      org.springframework.boot
      spring-boot-starter-json
      2.0.0.RELEASE
      compile
    
    
      org.springframework.boot
      spring-boot-starter-tomcat
      2.0.0.RELEASE
      compile
    
    
      org.hibernate.validator
      hibernate-validator
      6.0.7.Final
      compile
    
    
      org.springframework
      spring-web
      5.0.4.RELEASE
      compile
    
    
      org.springframework
      spring-webmvc
      5.0.4.RELEASE
      compile
    
  

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

关于依赖的版本号

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

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

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

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

这是一种解脱~

小结

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

 






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

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

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

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

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

 

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

 

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

你可能感兴趣的:(SpringBoot入门(二)——起步依赖)