在本节中,我们将了解开发 Spring Boot 应用程序的先决条件。我们将开发一个小型 Spring Boot 应用程序来了解 Spring Boot 应用程序所需的配置以及每个配置的重要性。
以下是使用 Spring Boot 的先决条件列表:
- Java 8 or 9
- Spring 5.0.4 or later
Spring Boot 支持:
- Maven 3.2+ and Gradle 4 for dependency management and explicit builds
- Tomcat 8.5, Jetty 9.4, and Undertow 1.4
Spring Boot 应用程序可以部署到任何 servlet 3.0+ 兼容的 servlet 容器。
开发 Spring Boot 应用程序的第一步是安装 Spring Boot。它非常容易设置。它可以像其他标准 Java 库一样设置。要安装 Spring Boot,我们需要在类路径中包含适当的 spring-boot-*.jar 库文件。任何 IDE 或文本编辑器都可以使用,因为 Spring Boot 不需要任何专门的工具。
虽然我们可以在应用程序类路径中复制所需的 Spring Boot JAR 文件,但建议使用构建工具,例如 Maven 或 Gradle,进行依赖管理。
Spring Boot 依赖项使用的 Maven groupId 是 org.springframework.boot。对于 Spring Boot 应用程序,Maven POM 文件继承 spring-boot-starter-parent 项目。 Spring Boot 定义了启动项目,它被定义为 Spring Boot 应用程序依赖项中的一个依赖项。
让我们通过执行以下步骤开始创建我们的第一个 Spring Boot 应用程序:
- Create a kickstarter application using Spring Initializr.
- Choose Maven as the build and dependency management tool.
- Choose the appropriate Spring Boot version.
- Choose the packaging type as War.
- For the sake of simplicity, we will not include a JPA starter in the application. We will include a web module only to demonstrate the one request-response flow.
- Download and import the project into STS or Eclipse.
- In STS, you can run the application as a Spring Boot application whereas in Eclipse, you can choose to run the application as a Java Application.
现在让我们看一下代码片段。以下是示例 Maven POM 文件:
上述配置文件中值得注意的配置之一是父依赖项。如前所述,所有 Spring Boot 应用程序都使用 spring-boot-starter-parent 作为 pom.xml 文件中的父依赖。
父 POM 帮助管理子项目和模块的以下内容:
- Java version
- Version management for included dependencies
- The default configuration for the plugin
Spring Boot parent starter 将 Spring Boot 依赖项定义为 parent POM。因此,它从 Spring Boot 依赖项中继承了依赖项管理功能。它将默认 Java 版本定义为 1.6,但在项目级别,我们可以将其更改为 1.8,如前面的代码示例所示。
除了默认的 POM 文件,Spring Boot 还创建了一个 Java 类,作为应用程序的启动器。以下是示例 Java 代码:
SpringApplication 是一个负责引导 Spring Boot 应用程序的类。
Spring Boot 应用程序开发人员习惯于使用 @Configuration、@EnableAutoConfiguration 和 @ComponentScan 注释来注释主应用程序类。以下是每个注释的简要说明:
- @Configuration: This is a Spring annotation and not specific to Spring Boot applications. It indicates that the class is the source for bean definitions.
- @EnableAutoConfiguration: This one is a Spring Boot-specific annotation. The annotation enables the application to add beans from the classpath definitions.
- @ComponentScan: This annotation tells the Spring application to search for components, configurations, and services in the search path provided.
以下是 @SpringBootApplication 注解的定义:
查看前面的代码,很明显 @SpringBootApplication 是作为一个方便的注解来定义 Spring Boot 应用程序的,而不是声明三个注解。
以下块显示了 Spring Boot 应用程序启动时的日志输出:
此时,我们已经准备好 kickstarter Spring Boot 应用程序,但我们没有任何要呈现的 URL。因此,当您访问 http://localhost:8080 时,会显示类似于以下屏幕截图所示的页面:
让我们定义 Spring 控制器和默认路由,并为其添加文本内容。以下是控制器类的代码片段:
在前面的示例代码中,我们使用 @RequestMapping 注释定义了两个路由。以下是前面代码块中使用的注释列表以及简要说明:
- The @Controller annotation indicates that the class is a controller class and may contain request mappings.
- The @RequestMapping annotation defines an application URL that the users can navigate to in the browser.
- The @ResponseBody annotation indicates that the method return value should be rendered on the page as the HTML content. The value parameter can take the URL path to be navigated.
以下屏幕截图显示了我们在浏览器中点击 http://localhost:8080 时显示或呈现的页面:
我们还定义了参数化请求映射,其值为 /welcome。当我们在浏览器中导航到 URL 时,请求参数的值将反映在页面上的消息中。以下屏幕截图显示了内容的呈现方式:
当具有这些请求映射的应用程序启动时,我们可以找到以下日志条目:
至此,我们的第一个带有示例请求映射的 Spring Boot 应用程序就位。本节作为 Spring Boot 应用程序开发的分步指南。在下一节中,我们将了解更多 Spring Boot 特性。