使用弹簧启动器的更好方法

时间:2018-03-05 12:49:51

标签: java spring spring-mvc spring-boot

我找到了两种为spring boot rest服务应用程序添加依赖项的方法。

方法1:

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

方法2:

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

上面给出的两种方法都做同样的工作?性能有何不同?

提前致谢

2 个答案:

答案 0 :(得分:1)

这些方法之间的区别在于spring-boot-starter-web包含的依赖项多于spring-boot-starterspring-web

对于版本1.5.8.RELEASE,它将是:

  • 弹簧引导起动
  • 弹簧引导起动的Tomcat
  • 冬眠-验证
  • 杰克逊数据绑定
  • 弹簧的web
  • 弹簧webmvc

所有其他东西取决于您的要求。例如,如果您正在开发商业产品,则必须检查所有包含的许可证的传递依赖性。

一般建议是仅使用您需要的功能。不要忘记您仍然可以依赖顶级工件,不包括使用Maven功能所需的部件。

为了提升性能,基本上不应该那么多。区别仅在于Spring(具有顶级工件依赖性)将加载并自动配置一些在代码中实际使用的功能(在类路径扫描期间)。由于同样的原因,启动时间可能略有增加。

希望它有所帮助!

答案 1 :(得分:0)

显然,第二种方法更好,即使用springboot starter pom。

我说的原因如下: -

  1. 它允许zero configurationauto configuration,即默认情况下会向您提供大多数与网络相关的设置。例如默认情况下,将集成tomcat服务器,为您添加springboot依赖项,自动注册转换器和其他与Web相关的依赖项等。请参阅this链接。

  2. 您可以利用轻松覆盖,即如果明天您想使用jetty代替tomcat,只需添加jetty依赖项及其配置,现在您可以使用jetty。

  3. 您的pom.xml会更整洁,更具可读性。依赖关系被置于其中并从起始poms中选取。

  4. 易于兼容性管理。默认情况下,spring-boot会选择starter parent的版本。因此,您可以放心,所有兼容的依赖项都将作为mvn依赖项的一部分下载,如果您特别想升级其中任何一种,那么。但是这样可以通过更改springboot starter parent的版本来升级到兼容的依赖项(注意:您也可以使用依赖项管理来代替启动父pom。请参阅this链接)。

  5. 性能方面会有一个权衡,因为默认情况下springboot会下载比最初所需的最小依赖项更多的依赖项。但是随着应用程序开始变得成熟,大多数依赖项都会被使用。