使用Spring Boot

本节将详细介绍如何使用Spring Boot。它涵盖了诸如构建系统,自动配置以及如何运行应用程序之类的主题。我们还将介绍一些Spring Boot最佳实践。尽管Spring Boot并没有什么特别的地方(它只是另一个可以使用的库),但是有一些建议可以使您的开发过程更轻松一些。

如果您是从Spring Boot开始的,那么在进入本节之前,您可能应该阅读入门指南

3.1 构建系统

强烈建议您选择一个支持依赖关系管理并且可以使用发布到“Maven Central”存储库的artifacts的构建系统。我们建议您选择Maven或Gradle。可以使Spring Boot与其他构建系统(例如Ant)一起使用,但是它们并没有得到很好的支持。

3.1.1 依赖管理

每个Spring Boot版本都提供了它所支持的依赖关系的精选列表。实际上,您不需要为构建配置中的所有这些依赖项提供版本,因为Spring Boot会为您管理该版本。当您升级Spring Boot本身时,这些依赖项也会以一致的方式升级。

Tips: 您仍然可以指定版本,并在需要时覆盖Spring Boot的建议。

精选列表包含可与Spring Boot一起使用的所有spring模块以及完善的第三方库列表。该列表作为可与MavenGradle一起使用的标准物料清单(spring-boot-dependencies)提供。

Warning: Spring Boot的每个发行版都与Spring Framework的基本版本相关联。 强烈建议您不要指定其版本。

3.1.2 Maven

Maven用户可以从spring-boot-starter-parent项目继承来获得合理的默认值。 父项目提供以下功能: Java 1.8是默认的编译级别。 UTF-8源编码。 从spring-boot-dependencies pom继承的依赖管理部分,它管理公共依赖项的版本。 当在自己的pom中使用这些依赖关系时,可以为这些依赖关系省略\<version>标记。 具有重新打包执行ID的重新打包目标的执行。[An execution of the repackage goal with a repackage execution id.] 合理的资源过滤。 合理的插件配置(exec pluginGit commit IDshade)。 * 对application.properties和application.yml进行合理的资源过滤,包括profile-specific的文件(例如application-dev.properties和application-dev.yml)

请注意,由于application.properties和application.yml文件接受Spring样式的占位符(${…}),因此Maven过滤已更改为使用@ .. @占位符。(您可以通过设置一个名为resource.delimiter的Maven属性来覆盖它。)

继承父Starter

要将项目配置为从spring-boot-starter-parent继承,请设置pom文件的parent,如下所示:

 <!-- Inherit defaults from Spring Boot -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.2.RELEASE</version>
</parent>

Note: 您只需要为此依赖项指定Spring Boot版本号。如果导入其他启动器,则可以安全地省略版本号。

使用该设置,您还可以通过覆盖自己项目中的属性来覆盖各个依赖项。例如,要升级到另一个Spring Data发布系列,可以将以下内容添加到pom.xml中:

 <!-- Inherit defaults from Spring Boot -->
<properties>
<spring-data-releasetrain.version>Fowler-SR2</spring-data-releasetrain.version>
</properties>

Tip: 查看spring-boot-dependencies pom以获取受支持属性的列表。

在没有父POM的情况下使用Spring Boot

并非每个人都喜欢从spring-boot-starter-parent父POM继承。您可能需要使用自己的公司标准父级,或者可能希望显式声明所有Maven配置。

如果您不想使用spring-boot-starter-parent,仍然可以通过使用scope = import依赖项来保留依赖项管理(而不是插件管理)的好处,如下所示:

 <dependencyManagement>
<dependencies>
<dependency>
<!-- Import dependency management from Spring Boot -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.2.2.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

如上所述,前面的示例设置不允许您使用属性来覆盖各个依赖项。为了获得相同的结果,需要在spring-boot-dependencies条目之前的项目的dependencyManagement中添加一个条目。 例如,要升级到另一个Spring Data发布系列,可以将以下元素添加到pom.xml中:

 <dependencyManagement>
<dependencies>
<!-- Override Spring Data release train provided by Spring Boot -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-releasetrain</artifactId>
<version>Fowler-SR2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.2.2.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

Note: 在前面的示例中,我们指定了BOM,但是可以以相同方式覆盖任何依赖项类型。

使用Spring Boot Maven插件

Spring Boot包含一个可以将项目打包为可执行jar的Maven插件。如果要使用插件,请将其添加到您的\<plugins>部分,如以下示例所示:

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

Note: 如果您使用了spring-boot-starter-parent,则只需添加该插件。除非您要更改父级中定义的设置,否则无需对其进行配置。

3.1.3 Gradle

3.1.4 Ant

3.1.5 启动器[Starters]

Starters是一系列便捷的,可以包含在你应用中的依赖项描述符[dependency descriptors]。您可以一站式获取所需的所有Spring和相关技术,从而省去遍历示例代码和遍历依赖描述符的负担。例如,如果要开始使用Spring和JPA进行数据库访问,在项目中包括spring-boot-starter-data-jpa依赖项即可。

入门程序包含许多启动项目并快速运行所需的依赖项,并且支持依赖传递。

关于名字叫什么

官方startter都遵循类似的命名方式:spring-boot-starter-*,其中 * 是特定类型的应用程序[application]。这种命名结构在您需要寻找starter时提供了便利。许多IDE中的Maven集成使您可以按名称搜索依赖项。例如,在安装了适当的Eclipse或STS插件的情况下,您可以在POM编辑器中按ctrl-space并键入“spring-boot-starter”以获取完整列表。

如“创建自己的Stater”部分中所述,第三方starter的命名不建议以spring-boot开头,因为它是为Spring Boot官方artifactId保留的。而是,第三方启动程序通常以项目名称开头。例如,一个名为thirdpartyproject的第三方启动程序项目通常会被命名为thirdpartyproject-spring-boot-starter。

Spring Boot在org.springframework.boot组下提供了以下应用程序的starters:

Table 1. Spring Boot application starters

Table 2. Spring Boot production starters

Table 3. Spring Boot technical starters

Spring Boot提供的starters pom均可在Github找到,参考地址:https://github.com/spring-projects/spring-boot/tree/v2.2.2.RELEASE/spring-boot-project/spring-boot-starters

Tip: 有关社区贡献的其他staters的列表,请参阅GitHub上spring-boot-starters模块中的README文件

Spring Boot 2.2.2.RELEASE版本中文文档持续更新中~如有需要获取参考文档文件,关注公众号JavaSo,回复“参考文档”即可。


关注微信公众号,一起交流下咯~

Spring Boot 2.2.2.RELEASE 版本中文参考文档【3.1】的更多相关文章

  1. Spring Boot 2.2.2.RELEASE 版本中文参考文档【3.2 - 3.10】

    Spring Boot 2.2.2.RELEASE版本中文文档持续更新中~如有需要获取参考文档文件,关注公众号JavaSo,回复“参考文档”即可. 3.2 结构化代码 Spring Boot不需要任何 ...

  2. Spring Boot 2.2.2.RELEASE 版本中文参考文档

    写在前面 在我初次接触MongoDB的时候,是为了做一个监控系统和日志分析系统.当时在用Java操作MongoDB数据里的数据的时候,都是在网上查找Demo示例然后完成的功能,相信大家也同样的体会,网 ...

  3. Java | Spring Boot Swagger2 集成REST ful API 生成接口文档

      Spring Boot Swagger2 集成REST ful API 生成接口文档 原文 简介 由于Spring Boot 的特性,用来开发 REST ful 变得非常容易,并且结合 Swagg ...

  4. spring boot / cloud (三) 集成springfox-swagger2构建在线API文档

    spring boot / cloud (三) 集成springfox-swagger2构建在线API文档 前言 不能同步更新API文档会有什么问题? 理想情况下,为所开发的服务编写接口文档,能提高与 ...

  5. Spring Boot 2.x基础教程:Swagger静态文档的生成

    前言 通过之前的两篇关于Swagger入门以及具体使用细节的介绍之后,我们已经能够轻松地为Spring MVC的Web项目自动构建出API文档了.如果您还不熟悉这块,可以先阅读: Spring Boo ...

  6. Spring Boot(九)Swagger2自动生成接口文档和Mock模拟数据

    一.简介 在当下这个前后端分离的技术趋势下,前端工程师过度依赖后端工程师的接口和数据,给开发带来了两大问题: 问题一.后端接口查看难:要怎么调用?参数怎么传递?有几个参数?参数都代表什么含义? 问题二 ...

  7. spring boot 中使用swagger 来自动生成接口文档

    1.依赖包 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swa ...

  8. Spring Batch 中文参考文档 V3.0.6 - 1 Spring Batch介绍

    1 Spring Batch介绍 企业领域中许多应用系统需要采用批处理的方式在特定环境中运行业务操作任务.这种业务作业包括自动化,大量信息的复杂操作,他们不需要人工干预,并能高效运行.这些典型作业包括 ...

  9. 记录Spring Boot 2.3.4.RELEASE版注解方式实现AOP和通知的执行顺序

    1.advice 按照以下的顺序执行 输出结果:(正常和异常) 说明:Spring boot 2.3.4.RELEASE 版本使用的AOP是spring-aop-5.2.9.RELEASE,AOP的通 ...

随机推荐

  1. 在modelarts上部署mask-rcnn模型

    最近老山完成了对mask-rcnn在modelarts上的部署,部署模型来自于这个项目.部署的过程大体和我的上篇文章使用modelarts部署bert命名实体识别模型相似,许多细节也不在赘述.这篇文章 ...

  2. shell 循环读取文件及字符串转为数组

    文件/etc/hdocker_config内容如下: 30.72.63.94 30.72.63.95 30.72.63.96 30.72.63.97 /tmp/lasclocker.tar maste ...

  3. 一道随机函数题:由rand5()生成rand7()

    题目:已知rand5()函数能随机等概率的生成0, 1, 2, 3, 4,利用rand5()函数编写一个rand7()函数实现相似的功能. 分析:其实就是利用rand5()组合成一个更大范围的数,之后 ...

  4. luogu P4677 山区建小学 |dp

    题目描述 政府在某山区修建了一条道路,恰好穿越总共nnn个村庄的每个村庄一次,没有回路或交叉,任意两个村庄只能通过这条路来往.已知任意两个相邻的村庄之间的距离为did_idi​(为正整数),其中,0& ...

  5. [TimLinux] django SELinux+httpd+mod_wsgi部署

    1. 实验项目 $ django-admin startproject myweb $ cd myweb/ $ python manage.py startapp poll 1. 配置使用MySQL ...

  6. CF 1131A,1131B,1131C,1131D,1131F(Round541 A,B,C,D,F)题解

    A. Sea Battle time limit per test 1 second memory limit per test 256 megabytes input standard input ...

  7. webpack(四) --css样式及图片打包

    一.CSS样式打包 1. loader简介 由于Webpack打包入口目前只配置了一个index.js文件,那么其他需要被打包的文件都必须通过模块化方式引入该文件才行,而默认情况下,引入的文件必须是j ...

  8. Zabbix 监控PHP-FTPM、Tomcat、Redis应用

    一.zabbix 监控 PHP-FPM应用实战Nginx+PHP-FPM是目前最流行的LNMP架构,在基于PHP开发的系统下,对这些系统性能的监控,主要是关注PHP-FPM的运行状态,那么什么是PHP ...

  9. Python之数据分析工具包介绍以及安装【入门必学】

    前言本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 首先我们来看 Mac版 按照需求大家依次安装,如果你还没学到数据分析,建议你 ...

  10. 笔记||Python3之异常处理

    异常概念:1 - 代码执行产生错误,无法继续 2 - 在异常前面代码是可以执行的  ---python是解释型的 3 - 异常作用  --- 程序不要退出 - 可以继续执行 同时给予程序员一定的异常提 ...