摘要:开发你的第一个应用程序本节描述如何开发一个简单的应用程序来突出了的一些关键特性,我们使用来构建这个项目,因为大多数都支持它。如果你希望分发一个自包含的应用程序,这可能会有问题。
11. 开发你的第一个Spring Boot应用程序
本节描述如何开发一个简单的“Hello World!” web应用程序来突出了Spring Boot的一些关键特性,我们使用Maven来构建这个项目,因为大多数IDE都支持它。
spring.io网站包含许多使用Spring Boot的“入门”指南,如果你需要解决一个具体的问题,先检查一下。
你可以通过使用start.spring.io和从依赖关系搜索器中选择“Web”启动器来快捷地完成以下步骤,这样做会生成一个新的项目结构,这样你就可以立即开始编写代码,查看Spring Initializr文档了解更多细节。
在开始之前,打开一个终端并运行以下命令,以确保安装了有效的Java和Maven版本:
$ java -version java 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 -v Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T16:41:47+00:00) Maven home: /usr/local/Cellar/maven/3.3.9/libexec Java 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.0.5.RELEASE
前面的清单应该给你一个工作构建,你可以通过运行mvn package来测试它(现在,你可以忽略“jar will be empty - no content was marked for inclusion!”的警告)。
此时,你可以将项目导入到IDE中(大多数现代Java IDE都包含对Maven的内置支持),为了简单起见,我们继续使用这个示例的纯文本编辑器。11.2 添加类路径依赖
Spring Boot提供了一些“Starters”,可以让你将jar添加到类路径中,我们的示例应用程序已经在POM的父部分使用了spring-boot-starter-parent,spring-boot-starter-parent是一个特殊的starter,它提供有用的Maven默认值,它还提供了一个dependency-management部分,以便你可以“幸福”的省略依赖项的version标记。
其他“Starters”提供了在开发特定类型的应用程序时可能需要的依赖项,由于我们正在开发一个web应用程序,所以我们添加了一个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依赖项立即添加到parent部分下面:
org.springframework.boot spring-boot-starter-web
如果你再次运行mvn dependency:tree,你会看到现在有许多额外的依赖项,包括Tomcat web服务器和Spring Boot本身。
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 @EnableAutoConfiguration public class Example { @RequestMapping("/") String home() { return "Hello World!"; } public static void main(String[] args) throws Exception { SpringApplication.run(Example.class, args); } }
虽然这里没有多少代码,但仍有很多工作要做,我们将在接下来的几节中讨论重要的部分。
11.3.1 @RestController和@RequestMapping注解在我们的Example类上的第一个注解是@RestController,这被称为构造型注解,它为阅读代码的人们提供了一些提示,并且为Spring提供了一个特定的角色。在本例中,我们的类是一个web @Controller,所以Spring在处理传入web请求时考虑它。
@RequestMapping注解提供了“路由”信息,它告诉Spring,任何带有/路径的HTTP请求都应该映射到home方法,@RestController注解告诉Spring将生成的字符串直接呈现给调用者。
@RestController和@RequestMapping注解是Spring MVC注解,(它们不是特定于Spring Boot的)有关更多详细信息,请参见Spring参考文档中的MVC部分。11.3.2 @EnableAutoConfiguration注解
第二个类级别注解是@EnableAutoConfiguration,这个注解告诉Spring Boot基于你添加的jar依赖项“猜测”你想如何配置Spring,因为Spring-boot-starter-web添加了Tomcat和Spring MVC,所以自动配置假设你正在开发一个web应用程序,并相应地设置Spring。
Starters和自动配置11.3.3 “Main”方法自动配置被设计成与“Starters”很好地工作,但是这两个概念并没有直接关联。你可以自由地挑选和选择除starters之外的jar依赖项,Spring Boot仍然尽力自动配置你的应用程序。
我们的应用程序的最后一部分是main方法,这只是遵循应用程序入口点的Java约定的标准方法。我们的main方法通过调用run委托给Spring Boot的SpringApplication类,SpringApplication引导我们的应用程序启动Spring,而Spring又启动了自动配置的Tomcat web服务器。我们需要通过Example.class作为run方法的参数,以告诉SpringApplication它是主Spring组件,args数组也被传递,以公开任何命令行参数。
11.4 运行样例此时,你的应用程序应该可以工作了,因为你使用了spring-boot-starter-parentPOM,所以你有一个有用的run目标,你可以使用它来启动应用程序。类型mvn spring-boot:run从根项目目录运行,以启动应用程序,你应该会看到类似如下的输出:
$ mvn spring-boot:run . ____ _ __ _ _ / / ___"_ __ _ _(_)_ __ __ _ ( ( )\___ | "_ | "_| | "_ / _` | / ___)| |_)| | | | | || (_| | ) ) ) ) " |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.0.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(有时称为“fat jars”)是包含你的编译类的存档文件,以及你的代码需要运行的所有jar依赖项。
可执行jar和JavaJava没有提供加载嵌套jar文件的标准方法(jar文件本身包含在一个jar中)。
如果你希望分发一个自包含的应用程序,这可能会有问题。为了解决这个问题,许多开发人员使用“uber”jar,一个uber jar将所有应用程序依赖项的所有类打包成一个归档文件,这种方法的问题在于,很难看到应用程序中有哪些库,如果在多个jar中使用相同的文件名(但使用不同的内容),也会有问题。
Spring Boot采用了一种不同的方法,让你可以直接嵌套jar。
要创建一个可执行jar,我们需要将spring-boot-maven-plugin添加到我们的pom.xml中,要做到这一点,请在dependencies部分下面插入以下几行:
org.springframework.boot spring-boot-maven-plugin
spring-boot-starter-parentPOM包括配置以绑定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.0.5.RELEASE:repackage (default) @ myproject --- [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------
如果查看target目录,应该会看到myproject-0.0.1-snapshot.jar,文件的大小应该在10MB左右,如果你想查看内部,可以使用jar tvf,如下所示:
$ jar tvf target/myproject-0.0.1-SNAPSHOT.jar
你还应该看到一个更小的文件,名为myproject-0.0.1-snapshot.jar.original在target目录中,这是Maven在Spring Boot重新打包之前创建的原始jar文件。
要运行该应用程序,请使用java -jar命令,如下所示:
$ java -jar target/myproject-0.0.1-SNAPSHOT.jar . ____ _ __ _ _ / / ___"_ __ _ _(_)_ __ __ _ ( ( )\___ | "_ | "_| | "_ / _` | / ___)| |_)| | | | | || (_| | ) ) ) ) " |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.0.5.RELEASE) ....... . . . ....... . . . (log output here) ....... . . . ........ Started Example in 2.536 seconds (JVM running for 2.864)
如前所述,退出应用程序,按ctrl-c。
12.下一步要读什么希望这一节提供了一些Spring Boot基础知识,并帮助你编写自己的应用程序。如果你是面向任务的开发人员,你可能想跳到spring.io和查看一些入门指南来解决具体的“我如何用Spring实现它?”的问题,我们还有Spring boot特有的“How-to”参考文档。
Spring Boot repository也有一些你可以运行的示例,这些示例与代码的其余部分无关(也就是说,你不需要构建其余的代码来运行或使用示例)。
上一篇:安装 Spring Boot 下一篇:构建系统文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/69613.html
摘要:参考指南使你可以轻松地创建可运行的独立的生产级的基于的应用程序,我们对平台和第三方库有自己的看法,这样你就可以以最低限度工作开始了,大多数应用程序都需要很少的配置。文档本节简要概述了参考文档,它充当文档其余部分的映射。 Spring Boot 参考指南 Spring Boot使你可以轻松地创建可运行的独立的、生产级的基于Spring的应用程序,我们对Spring平台和第三方库有自己的看...
摘要:关于文档参考指南可用如下方式最新的副本可以在中找到。尝试操作文档,它们为最常见的问题提供解决方案。学习基础,构建在许多其他项目上,网站提供丰富的参考文档,如果你要从开始,尝试其中一个指南。我们对进行监视,以解决带有标记的问题。 1. 关于文档 Spring Boot 参考指南可用如下方式: HTML PDF EPUB 最新的副本可以在 docs.spring.io/spring-b...
摘要:安装可以与经典开发工具一起使用,也可以作为命令行工具安装。下面的示例展示了一个典型的文件安装命令行接口是一个命令行工具,你可以使用它来快速地实现的原型。 10. 安装Spring Boot Spring Boot可以与经典Java开发工具一起使用,也可以作为命令行工具安装。无论哪种方式,都需要Java SDK v1.8或更高版本。在开始之前,你应该使用以下命令检查当前的Java安装: ...
摘要:构建系统强烈建议你选择一个支持依赖管理的构建系统,并且可以使用发布到中心存储库的工件。例如,要升级到另一个,你可以将以下元素添加到你的在前面的示例中,我们指定了一个,但是任何依赖类型都可以以相同的方式被覆盖。 13. 构建系统 强烈建议你选择一个支持依赖管理的构建系统,并且可以使用发布到Maven中心存储库的工件。我们建议你选择Maven或Gradle,可以让Spring Boot与其...
摘要:从运行你可以从运行应用程序作为简单的应用程序,但是,你首先需要导入你的项目,导入步骤取决于你的和构建系统。如果你不小心运行了两次应用程序,你你会看到一个错误,用户可以使用按钮而不是按钮来确保任何现有实例都已关闭。 19. 运行你的应用程序 将你的应用程序打包为jar并使用嵌入式HTTP服务器的最大优点之一是,你可以像对待其他应用程序一样运行应用程序,调试Spring Boot应用程序也...
阅读 916·2021-11-25 09:43
阅读 1282·2021-11-17 09:33
阅读 2998·2019-08-30 15:44
阅读 3300·2019-08-29 17:16
阅读 471·2019-08-28 18:20
阅读 1624·2019-08-26 13:54
阅读 546·2019-08-26 12:14
阅读 2165·2019-08-26 12:14