翻译《Spring Boot Reference Guide》-第二单元.入门
发布日期:2021-06-28 15:39:50 浏览次数:2 分类:技术文章

本文共 9487 字,大约阅读时间需要 31 分钟。

第二单元. 入门

如果你刚开始接触SpringBoot,或者Spring,从阅读这章节开始。它会回答基本的“SpringBoot是什么?”,“怎么用SpringBoot?”和“何要用SpringBoot?”问题。它包含了SpringBoot介绍,以及安装说明。然后,我们引导你构建你的第一个SpringBoot应用,并讨论一些核心原则。

8. 介绍SpringBoot

SpringBoot使创建可运行的,独立的,基于Spring的产品级应用变得简单。我们封装了Spring平台和第三方库,让你轻松入门。大部分SpringBoot应用只需要少量的配置。

你可以使用SpringBoot创建使用java-jar启动或者传统的war包部署的java应用。我们还提供运行“spring脚本”的命令行工具。

我们主要目标:

  • 为所有Spring开发提供根本上更快且更广泛可理解的入门经验。
  • 开箱即用,但可以根据需求快速修改默认配置。
  • 提供一系统大型项目通用的非功能型特色功能(例如嵌入式服务,安全性,指标,运行状况检查和外部化部署)
  • 完全没有代码生成,也不需要XML配置。

9. 系统要求

Spring Boot 2.1.5.RELEASE需要Java8并且兼容更高到Java11(包含)。或者更高版本。

为以下构建工具提供了明确的构建支持:

Build Tool Version
Maven 3.3+
Gradle 4.4+

9.1 Servlet容器

SpringBoot支持以下嵌入式容器:

Name Servlet Version
Tomcat 9.0 4.0
Jetty 9.4 3.1
Undertow 2.0 4.0

你也可以使用任何Servlet 3.1+兼容容器来部署SpringBoot应用。

10. 安装SpringBoot

SpringBoot可以和“经典”Java开发工具一起使用或作为一个命令行工具安装。不管哪种方式,你都需要JavaSDK1.8或者更高版本。当你开始之前,你可以使用以下命令来检查你当前Java安装版本:

$ java -version

如果你是Java开发新手或者你想尝试SpringBoot,则可能要先试下SpringBootCLI(命令行界面)。否则,阅读“经典”安装说明。

10.1 Java开发人员安装指南

你可以像使用标准Java库一样使用SpringBoot。在classpath下添加适当spring-boot-*.jar文件。SpringBoot不需要特定工具集成,你可以使用任何IDE或者文件编辑器。另外,SpringBoot应用没有任何特别的,你可以像其他Java程序一样运行和调试SpringBoot应用。

尽管你可以复制SpringBoot的jar包,但是我们建议你使用支持依赖关系管理的构建工具(例如Maven或Gradle)。

Maven安装

SpringBoot兼容Apache Maven 3.3或更高版本。如果尚未安装Maven,则可以按照maven.apache.org上的说明进行操作。

在很多操作系统,Maven被安装用于包管理。如果你使用OSX Homebrew,可以尝试brew install maven。Ubuntu用户可以运行sudo apt-get install maven。Windows用户可以通过Chocolatey运行choco install maven。

Homebrew是一款Mac OS平台下的软件包管理工具,拥有安装、卸载、更新、查看、搜索等很多实用的功能。

Chocolatey是Windows下的包管理工具。

SpringBoot依赖使用org.springframework.boot.groupId。通常,你的POM文件继承自spring-boot-starter-parent项目,依赖一个或多个“启动器”。SpringBoot支持一个可选择的Maven插件去创建可执行的jars。

下列列表展示一个经典的pom.xml文件:

4.0.0
com.example
myproject
0.0.1-SNAPSHOT
org.springframework.boot
spring-boot-starter-parent
2.1.5.RELEASE
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-maven-plugin

spring-boot-starter-parent是一种很好的方式去使用SpringBoot,但是它不一定是适合所有情况。有时候你需要继承另外的父类POM,或者你不喜欢我们默认设置。如果这样,查看,提供一种使用import范围的解决方案。

org.springframework.boot
spring-boot-dependencies
2.1.5.RELEASE
pom
import

Gradle安装

SpringBoot兼容Gradle4.4或更高版本。Gradle,则可以按照gradle.org上的说明进行操作。

SpringBoot依赖使用org.springframework.boot.group。通常,你的项目会依赖一个或多个“启动器”。SpringBoot提供一个有效的Gradle插件,它可以简化依赖声明和创建可执行的jars。

当你需要构建一个工程时,Gradel包装器提供了一种“obtaining”Gradle的好方法。它是一个小脚本和包,你可以把它们和代码一起提交,便以引导构建过程。查看细节:docs.gradle.org/4.2.1/userguide/gradle_wrapper.html

更多关于SpringBoot和Gradle的基础细节,可以查找Getting Started章节Gradle plugin’s参考指南。

10.2 SpringBoot CLI 安装

该章节忽略

10.3 升级早期版本的SpringBoot

如果你想从早期正式版本的springboot升级,查看,它提供详细的升级介绍。也可以查看,以获得每个版本的“新的和值得注意的”特性的列表。

升级到新功能版本时,一些配置可能会重命名或者被移除。SpringBoot提供一种方式去分析你应用的环境和在启动时打印诊断内容,还可以在运行时为你临时迁移属性。要启用该特性,添加下方的依赖到你的工程中:

org.springframework.boot
spring-boot-properties-migrator
runtime

晚添加到环境中的属性,例如使用@PropertySource时,将不被考虑。

一旦你完成迁移,请确保在你的项目依赖中移除该模块。

要升级现有的CLI安装,请使用适当的包管理器命令(例如,brew升级),或者,如果你手动安装了CLI,请遵循标准说明,记住更新您的PATH环境变量以删除任何旧的引用。

介绍migrator文章:

11. 开发你的第一个SpringBoot应用

这个章节详细介绍如何开发一个简单的“HelloWorld!”网页应用来体现springboot一些关键特征。我们使用Maven来构建这个项目,大多数IDE都支持Maven。

spring.io网站包含很多使用springboot的“入门”指南。如果你要解决特殊问题,优先从该网站找答案。

你可以通过以下快捷方式:访问start.spring.io网站通过依赖搜索来选择“Web”启动器。以此来创建一个新项目结构使你可以马上开始编程。参阅Spring Initializr文档以获得更多详细信息。

在我们开始之前,打开一个终端并且运行以下命令,来保证你有安装Java和Maven的有效版本。

$ java -versionjava version "1.8.0_102"Java(TM) SE Runtime Environment (build 1.8.0_102-b14)Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode)
$ mvn -vApache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-17T14:33:14-04:00)Maven home: /usr/local/Cellar/maven/3.3.9/libexecJava version: 1.8.0_102, vendor: Oracle Corporation

这个示例需要在它自己的文件夹中创建。后续说明是假定你已经在创建了适当的文件夹,并且它是你的当前目录。

11.1 创建POM

我们首先需要创建一个Maven的pom.xml文件。pom.xml是用于构建你工程的配方。打开你喜欢的文本编辑器添加以下内容:

4.0.0
com.example
myproject
0.0.1-SNAPSHOT
org.springframework.boot
spring-boot-starter-parent
2.1.5.RELEASE

前面清单可以给你一个可用的构建。你可以通过运行mvn package来测试。(现在,你可以忽略“jar将是空的-没有内容被标记为包含”的警告)

此时,你可以导入该工程到IDE(大部分现代JavaIDE都包含对Maven的内置支持)。为了简单起见,我们在本例中继续使用纯文本编辑器。

11.2 添加classpath依赖

SpringBoot提供大量的“启动器”来让你添加jar到你的classpath。我们示例应用在pom文件的parent使用了spring-boot-starter-parent。spring-boot-starter-parent是一个特殊的启动器,它提供有用的Maven默认设置。它也提供依赖管理部分,这样你在使用“blessed”的依赖就可以忽略version标签。

因为blessed不知道如何翻译。这个功能就是当使用了或者,那在依赖它pom中的依赖时,可以忽略版本。

其他启动器也提供依赖,当你可能需要开发一个特定类型的应用。之前我们开发网页应用,我们添加了spring-boot-starter-web依赖。在此之前,我们可以看看当我们运行以下命令会有什么现象:

$ mvn dependency:tree[INFO] com.example:myproject:jar:0.0.1-SNAPSHOT

mvn dependency:tree命令可以打印一棵展现你项目依赖的树。你可以看到spring-boot-starter-parent自身没有提供任何依赖。当添加必需的依赖,编辑你的pom.xml添加spring-boot-starter-web依赖在父部分下方:

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

如果你重新运行mvn dependency:tree,你可以看到大量附加的依赖,包含了Tomcat服务和SpringBoot。

11.3 编写代码

要完成我们的应用,我们需要去创建一个单独的Java文件。默认情况下,Maven从src/main/java中编译源代码,所以你需要去创建这个目录结构,然后添加一个文件命名为src/main/java/Example.java,包含以下代码:

import org.springframework.boot.*;import org.springframework.boot.autoconfigure.*;import org.springframework.web.bind.annotation.*;@RestController@EnableAutoConfigurationpublic class Example {
@RequestMapping("/") String home() {
return "Hello World!"; } public static void main(String[] args) {
SpringApplication.run(Example.class, args); }}

尽管这里没有太多编码,但是正在进行很多工作。我们将在接下来的几个章节中逐步介绍重要的部分。

@RestController和@RequestMapping注解

我们Example类的第一个注释是@RestController。这被称为stereotype注释。它为阅读代码的人和Spring提供了提示,提示该类起特定的作用。在这种情况下,我们的类是web @Controller,因此Spring在处理传入的Web请求时会考虑使用它。

spring中关于stereotype annotation的定义有:@Component,@Repository,@Service,@Controller

该@RequestMapping注释提供“路由”的信息。它告诉Spring任何具有/路径的HTTP请求都应映射到该home方法。该 @RestController注解告诉Spring使得到的字符串直接返回给调用者。

@RestController与@RequestMapping注解是SpringMVC的注解。(它们不是特定于SpringBoot)有关更多详细信息,请参见Spring参考文档中的 。

@EnableAutoConfiguration注解

第二个类级别注解是@EnableAutoConfiguration。这个注解告诉了SpringBoot基于你添加的jar依赖去“猜测”你打算如何配置Spring。由于spring-boot-starter-web添加Tomcat和SpringMVC,自动配置就假定你在开发一个web应用并设置spring相应配置。

自动配置被设计用于更好的服务于“Starters”,但是这两个观念没有直接的关联。你可以自由添加和选择启动器以外的jar包依赖。SprinBoot依然会尽可能的自动配置你的应用。

“main”方法

我们应用的最终部分是main方法。这是一个标准的方法,它遵循应用程序入口点的Java约定。我们main方法委托SpringBoot的SpringApplicaiton类调用run方法。SpringApplication引导我们应用,启动Spring,这反过来又启动了自动配置的TomcatWeb服务器。我们需要通过Excmple.class作为一个参数到run方法来告诉SpringApplication,哪个是主要的Spring组件。args数组也传递公开命令行参数。

11.4 运行Excmple

这个时候,你的应用程序应该可以工作。之前你使用了spring-boot-starter-parent的POM,你有一个有用的run目标,你可以用来启动应用程序。在项目根目录输入mvn spring-boot:run来启动应用程序。你应该可以看到类似以下的输出:

$ mvn spring-boot:run  .   ____          _            __ _ _ /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/  ___)| |_)| | | | | || (_| |  ) ) ) )  '  |____| .__|_| |_|_| |_\__, | / / / / =|_||___/=/_/_/_/ :: Spring Boot ::  (v2.1.5.RELEASE)....... . . ........ . . . (log output here)....... . . ......... Started Example in 2.222 seconds (JVM running for 6.514)

如果你通过web浏览器访问localhost:8080,你应该可以看到以下的输出:

Hello World!

要正常退出该应用程序,请按ctrl-c。

11.5 创建可执行jar

我们创建一个在生产环境中完全独立可执行的jar文件来结束我们的示例。可执行jar(有时候称“fatjars”)是包含你所有已编译的class文件以及代码运行所依赖的jar包的归档文件。

Java没有提供一种标准的方式去加载嵌套的jar文件(jar中本身包含的jar文件)。如果你要发布一个自包含的应用,可能会有问题。

为了解决这个问题,很多开发者使用了“uber”jar。unberjar将应用程序所有依赖项的类文件打包成一个单独的归档。这种方法的问题在于,很难查看应用程序中包含哪些库。如果在多个jar中使用相同的文件名(但具有不同的内容),也可能会产生问题。

SpringBoot采用,实际上允许你直接嵌套jar。

要创建可执行jar包,我们需要添加spring-boot-maven-plugin到我们的pom.xml中。为此,在你的依赖部分下方插入以下行:

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

spring-boot-starter-parent的POM包含了配置去绑定repackage目标。如果你不用父级的POM,你需要自己声明这个配置,查看细节。

保存你的pom.xml,然后执行mvn package命令行,如下:

$ mvn package[INFO] Scanning for projects...[INFO][INFO] -----------------------------------------------------------------------[INFO] Building myproject 0.0.1-SNAPSHOT[INFO] -----------------------------------------------------------------------[INFO] .... ..[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ myproject --[INFO] Building jar: /Users/developer/example/spring-boot-example/target/myproject-0.0.1-SNAPSHOT.jar[INFO][INFO] --- spring-boot-maven-plugin:2.1.5.RELEASE:repackage (default) @ myproject --[INFO] -----------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ----------------------------------------------------------------------

如果你查看targer目录,你应该可以看到myproject-0.0.1-SNAPSHOT.jar。这个文件差不多10MB。如果你要窥视内部,你可以使用jar tvf,如下:

$ jar tvf target/myproject-0.0.1-SNAPSHOT.jar

你应该可以在targer目录看到更小的文件myproject-0.0.1-SNAPSHOT.jar.original。这是Maven在SpringBoot重新打包之前创建的原始jar文件。

要运行该应用程序,请使用以下java -jar命令:

$ java -jar target/myproject-0.0.1-SNAPSHOT.jar  .   ____          _            __ _ _ /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/  ___)| |_)| | | | | || (_| |  ) ) ) )  '  |____| .__|_| |_|_| |_\__, | / / / / =|_||___/=/_/_/_/ :: Spring Boot ::  (v2.1.5.RELEASE)....... . . ........ . . . (log output here)....... . . ......... Started Example in 2.536 seconds (JVM running for 2.864)

要退出该应用程序,请按ctrl-c。

关注我

转载地址:https://blog.csdn.net/XiaMen_BuYu/article/details/105425098 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:翻译《Spring Boot Reference Guide》-第三单元.使用SpringBoot
下一篇:《深入理解Java虚拟机》之线程安全与锁优化

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2024年04月04日 14时53分55秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章