深入起步依赖(以spring-boot-starter-web为例)

1. 引入POM依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

2. POM文件剖析

起步依赖的核心就是对pom文件的配置优化。Spring boot版本升级的过程也是一个pom配置不断优化的过程。
Spring boot所有的jar包中,只有spring-boot和spring-boot-autoconfigure两个jar包里是有java代码的,其余的jar包全都是pom文件。It’s amazing!

pom文件描述1.5.9.RELEASE2.1.5.RELEASE
spring-boot-dependencies依赖包的版本进行统一管理依赖管理、插件管理依赖管理、插件管理
spring-boot-parent所有Spring boo包的父pom依赖管理、依赖、插件管理、插件无依赖、插件相关配置
spring-boot-starters所有起步依赖父pom聚合pom,包含所有起步依赖非聚合pom
spring-boot所有起步依赖的公共依赖包包含多个optional和test范围的依赖只包含sprng boot公共依赖,无option、test范围依赖
spring-boot-autoconfigure自动配置实现包,所有的自动配置类都可以在此包中找到包含多个optional和test范围的依赖包含多个option范围依赖、无test范围依赖

2.1.5-RELEASE版本较1.5.9.RELEASE版本的pom结构而言:结构更为清晰,职责更为明确、很好的体现了单一职责原则。

  1. 将所有的依赖管理和插件管理统一到spring-boot-dependencies中进行管理
  2. 取消spring-boot-starters 聚合pom的职责,只作为简单的起步依赖的父pom存在
  3. spring-boot仅用于配置spring boot的公共依赖
  4. 将所有仅用于构建使用的(scope为option)的依赖集中到spring-boot-autoconfigure中
  5. 依赖的版本配置下沉,一些只跟具体起步依赖相关的依赖的版本配置由起步依赖自己定义

2.1 Spring boot 1.5.9.RELEASE的POM文件解析

在这里插入图片描述

2.2 Spring boot 2.1.5.RELEASE的POM文件解析

在这里插入图片描述

3. 替换tomcat服务器为jetty

spring-boot-starter-web起步依赖默认的应用服务器是tomcat,如果想使用jetty作为应用服务器应该怎么做呢?很简单,只需要更改下配置文件即可。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
    </exclusions>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jetty</artifactId>
</dependency>

需要注意jetty版本跟jdk版本的兼容性问题,如果默认的jetty版本要求较高的jdk版本,可以考虑降低jetty版本。(Spring boot 1.5.9.RELEASE中有这个问题,2.1.5.RELEASE版本中没有这个问题)

4. spring-boot-starter-web的pom文件中的依赖配置(2.1.5.RELEASE)

  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter</artifactId>
      <version>2.1.5.RELEASE</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-json</artifactId>
      <version>2.1.5.RELEASE</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-tomcat</artifactId>
      <version>2.1.5.RELEASE</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.hibernate.validator</groupId>
      <artifactId>hibernate-validator</artifactId>
      <version>6.0.16.Final</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>5.1.7.RELEASE</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.1.7.RELEASE</version>
      <scope>compile</scope>
    </dependency>
  </dependencies>

参考

SpringBoot使用jetty服务器启动
Jetty 9.4.7 Released!

  • 8
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值