您可以使用这个[预先初始化的项目](https://start.spring.io/#!type=maven-project&language=java&platformVersion=2.5.5&packaging=jar&jvmVersion=11&groupId=com.example&artifactId=consuming-rest&name=consuming-rest&description=Demo project for Spring Boot&packageName=com.example.consuming-rest&dependencies=web)并单击 Generate 下载 ZIP 文件。此项目配置为适合本教程中的示例。
您可以使用这个[预先初始化的项目](https://start.spring.io/#!type=maven-project&language=java&platformVersion=2.5.5&packaging=jar&jvmVersion=11&groupId=com.example&artifactId=consuming-rest&name=consuming-rest&description=Demo project for Spring Boot&packageName=com.example.consuming-rest&dependencies=web) 单击 Generate 下载 ZIP 文件。此项目的配置适合教程中的示例。
@@ -229,29 +229,29 @@ public class ConsumingRestApplication {
## 运行应用程序
您可以使用 Gradle 或 Maven 从命令行运行应用程序。您还可以构建一个包含所有必要依赖项、类和资源的单个可执行 JAR 文件并运行它。构建可执行 jar 可以在整个开发生命周期、跨不同环境等中轻松地作为应用程序交付、版本化和部署服务。
您可以使用 Gradle 或 Maven 从命令行运行应用程序。您还可以构建一个包含所有必要依赖项、类和资源的单个可执行 JAR 文件并运行它。构建一个可执行的 jar 可以在整个开发生命周期、不同环境中作为应用程序轻松地去交付、升级、部署。
如果您使用 Gradle,则可以使用`./gradlew bootRun`. 或者,您可以使用构建 JAR 文件`./gradlew build`,然后运行 JAR 文件,如下所示:
如果您使用 Gradle,则可以使用`./gradlew bootRun` 去运行程序。或者,您可以使用`./gradlew build`构建 JAR 文件,然后运行 JAR 文件,如下所示:
```
java -jar build/libs/gs-consuming-rest-0.1.0.jar
```
如果您使用 Maven,则可以使用`./mvnw spring-boot:run`. 或者,您可以使用构建 JAR 文件,`./mvnw clean package`然后运行该 JAR 文件,如下所示:
如果您使用 Maven,则可以使用`./mvnw spring-boot:run`. 或者,您可以使用`./mvnw clean package`构建 JAR 文件,然后运行该 JAR 文件,如下所示:
```
java -jar target/gs-consuming-rest-0.1.0.jar
```
此处描述的步骤创建了一个可运行的 JAR。您还可以[构建经典的 WAR 文件](https://spring.io/guides/gs/convert-jar-to-war/)。
以上描述的步骤是如何创建一个可运行的 JAR。您还可以[构建经典的 WAR 文件](https://spring.io/guides/gs/convert-jar-to-war/)。
您应该看到类似于以下的输出,但带有随机引用:
您应该会看到类似于下面内容的输出,但会包含随机的引文:
```
2019-08-22 14:06:46.506 INFO 42940 --- [ main] c.e.c.ConsumingRestApplication : Quote{type='success', value=Value{id=1, quote='Working with Spring Boot is like pair-programming with the Spring developers.'}}
```
如果您看到显示为 的错误,`Could not extract response: no suitable HttpMessageConverter found for response type [class com.example.consumingrest.Quote]`则可能是您处于无法连接到后端服务的环境中(如果您可以访问它,它将发送 JSON)。也许您是公司代理的幕后黑手。尝试将`http.proxyHost`和`http.proxyPort`系统属性设置为适合您的环境的值。
如果您看到显示为的错误,`Could not extract response: no suitable HttpMessageConverter found for response type [class com.example.consumingrest.Quote]` 则可能是您处于无法访问到后端服务的环境中(如果您可以访问它,它将发送 JSON)。如果您是公司代理的管理员,尝试将 `http.proxyHost`和`http.proxyPort`系统属性设置为适合您的环境的值。
@@ -105,34 +105,34 @@ public class MyApplication {
}
```
虽然这里没有太多代码,但有很多事情正在发生。我们将在接下来的几节中逐步介绍重要部分。
虽然这里没有太多代码,但已经产生了很大的作用。我们将在接下来的几节中逐步介绍重要的部分。
#### @RestController 和 @RequestMapping 注解
`MyApplication`我们类的第一个注释是`@RestController`. 这称为*构造型*注释。它为阅读代码的人和 Spring 提供了类扮演特定角色的提示。在这种情况下,我们的类是一个 web `@Controller`,因此 Spring 在处理传入的 Web 请求时会考虑它。
`MyApplication`类的第一个注解是`@RestController`. 这称为*构造型*注解。它告诉阅读代码的人和 Spring 这个类扮演了哪些特定的角色。在这个例子中,我们的类是一个 web `@Controller`,因此 Spring 在处理传入的 Web 请求时会使用它。
`@RequestMapping`注释提供“路由”信息。它告诉 Spring 任何带有该`/`路径的 HTTP 请求都应该映射到该`home`方法。注释告诉 Spring将`@RestController`结果字符串直接呈现给调用者。
`@RequestMapping` 注释提供“路由”信息。它告诉 Spring 任何带有`/`路径的 HTTP 请求都应该映射到 `home` 方法。`@RestController` 注释告诉 Spring 将结果以字符串的形式直接呈现给调用者。
Tip:
和注释是 Spring MVC 注释`@RestController`(`@RequestMapping`它们不是特定于 Spring Boot)。有关详细信息,请参阅 Spring 参考文档中的[MVC 部分](https://docs.spring.io/spring-framework/docs/5.3.16/reference/html/web.html#mvc)。
`@RestController` 和 `@RequestMapping` 注释是 Spring MVC 注释(它们不是特定只用于 Spring Boot)。有关详细信息,请参阅 Spring 参考文档中的[MVC 部分](https://docs.spring.io/spring-framework/docs/5.3.16/reference/html/web.html#mvc)。
#### @EnableAutoConfiguration 注解
第二个类级别的注释是`@EnableAutoConfiguration`. 这个注解告诉 Spring Boot 根据你添加的 jar 依赖来“猜测”你想如何配置 Spring。由于`spring-boot-starter-web`添加了 Tomcat 和 Spring MVC,自动配置假定您正在开发 Web 应用程序并相应地设置 Spring。
第二个类级别的注释是`@EnableAutoConfiguration`. 这个注解告诉 Spring Boot 根据你添加的 jar 依赖来“猜测”你想如何配置 Spring。由于`spring-boot-starter-web`添加了 Tomcat 和 Spring MVC,自动配置功能会假定您正在开发 Web 应用程序并相应地设置 Spring。
```
启动器和自动配置
自动配置旨在与“启动器”很好地配合使用,但这两个概念并没有直接联系。您可以自由选择启动器之外的 jar 依赖项。Spring Boot 仍然尽力自动配置您的应用程序。
```
#### “主要”方法
#### “main”方法
我们应用程序的最后一部分是`main`方法。这是一种遵循应用程序入口点的 Java 约定的标准方法。我们的 main 方法通过调用委托给 Spring Boot 的`SpringApplication`类`run`。 `SpringApplication`引导我们的应用程序,启动 Spring,然后启动自动配置的 Tomcat Web 服务器。我们需要将`MyApplication.class`作为参数传递给该`run`方法,以判断`SpringApplication`哪个是主要的 Spring 组件。该`args`数组也被传递以公开任何命令行参数。
我们应用程序的最后一部分是`main`方法。这是一种遵循应用程序入口点的 Java 约定的标准方法。main 方法会委托给 Spring Boot 的 `SpringApplication` 类的 `run`方法。 `SpringApplication` 引导我们的应用程序,启动 Spring,然后启动自动配置的 Tomcat Web 服务器。我们需要将 `MyApplication.class` 作为参数传递给该 `run` 方法,去告诉 `SpringApplication` 哪个是主要的 Spring 组件。该 `args` 数组也传递了命令行参数。