Spring Boot Hello World应用程序

时间:2020-01-09 10:44:31  来源:igfitidea点击:

在本教程中,我们将介绍如何使用Eclipse和Maven创建第一个Spring Boot Hello World Web应用程序。

创建Maven项目

在Eclipse中,选择File-New-Maven Project创建一个Maven项目。

在" New Maven项目"窗口中,选中"创建简单项目(跳过原型选择)",然后单击"下一步"。

在下一个窗口中,提供组ID和工件ID值,然后单击完成。

  • GroupId这是项目组的ID。此ID唯一标识可能具有许多子项目的组。例如com.theitroad.spring可能包含其他与Spring相关的项目。
  • ArtifactId这是项目的ID。该ID唯一标识一个项目,例如SpringXML。 GroupId + ArtifactId定义工件在存储库中的位置,例如com.theitroad.spring.SpringXML

这将创建一个Maven项目结构。我们可能需要更改Java版本,因为Maven Project可能会默认添加Java SE5,我们可以使用build path属性来执行,也可以在添加Spring Boot依赖项时将其添加到pom.xml中。请注意,Spring Boot 2.x要求Java 8为最低Java版本,因此请确保至少已安装该Java版本。

添加Spring Boot依赖项

打开创建的pom.xml以添加与Spring Boot相关的依赖项,以便修改后的pom.xml如下所示

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.theitroad</groupId>
  <artifactId>SpringBootProject</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.6.RELEASE</version>
  </parent>
  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
  </dependencies>
  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>
</project>
  • 在POM的父部分中添加的第一个启动器是特殊的启动器spring-boot-starter-parent,它提供有用的Maven默认值。该父级启动器还提供了一个依赖项管理部分,因此我们无需提供依赖项的版本标签。每个Spring Boot版本都提供了它所支持的依赖关系的精选列表。我们不需要在构建配置中为任何这些依赖项提供版本,因为Spring Boot会为我们管理版本。请注意,我们仍然可以指定版本,并在需要时覆盖Spring Boot的建议。在我们的配置中,Spring Boot版本为2.1.6,因此Spring Boot获得了支持该版本的依赖项。
  • 由于我们正在开发Web应用程序,因此我们添加了spring-boot-starter-web依赖关系,该依赖关系添加了创建Spring Web应用程序所需的必需依赖关系。
  • 添加的第三件事是我们pom.xml中的spring-boot-maven-plugin。该插件提供了许多便利的功能-帮助创建可执行jar(über-jar),从而使执行和传输服务更加方便。
  • 它还搜索公共static void main()方法,以将具有此方法的类标记为可运行类。

通过添加这些依赖项,Spring Boot可以确保获得所需的jar依赖项,即使是嵌入式Web服务器(在本例中为Tomcat),也取决于起始Web依赖项。

Web应用程序类

我们将为我们的Web应用程序添加一个简单的控制器。 Maven从src / main / java编译源代码,因此在该位置创建一个程序包,然后在该程序包中添加控制器。

package com.theitroad.app;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloWorldController {
  @GetMapping(value="/{name}")
  public String showGreeting(@PathVariable("name") String name) {
    return "Hello " + name;
  }
}
  • 该类使用@RestController注释进行注释,该注释告诉Spring该类已准备就绪,可以由Spring MVC使用来处理Web请求,并且它指示结果字符串应直接写到响应主体中,我们不想呈现视图。
  • 在方法级别,使用@GetMapping注释,这是@RequestMapping的快捷方式(方法= RequestMethod.GET)。该注释提供路由信息。它告诉Spring任何具有/ {name)路径的HTTP请求都应映射到showGreeting方法。
  • @PathVariable注释使我们可以从请求路径中检索参数。

具有主方法的应用程序类

这是带有组件的应用程序类。

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class FirstSpringBootApp {
  public static void main(String[] args) {
    SpringApplication.run(FirstSpringBootApp.class, args);
  }
}

@SpringBootApplication是一个方便注释,它添加了以下所有注释

  • @Configuration注释将类标记为应用程序上下文的Bean定义的源。
  • @EnableAutoConfiguration告诉Spring Boot启用自动配置,以便基于类路径设置,其他bean和各种属性设置自动创建bean。例如,starter spring-boot-starter-web添加了Tomcat和Spring MVC,因此自动配置假定我们正在开发Web应用程序并相应地设置Spring,其中包括设置DispatcherServlet。
  • @ComponentScan告诉Spring递归地查找该包中的其他组件,配置和服务并注册它们。

主要方法是应用程序入口点,该入口点通过调用run委托给Spring Boot的SpringApplication类。 SpringApplication类将启动Spring,而后者又将启动嵌入式Tomcat Web服务器,并引导该HelloWorld应用程序。我们需要将FirstSpringBootApp.class作为参数传递给run方法,以告诉SpringApplication哪个是主要的Spring组件。

运行应用程序

我们可以将此Spring Boot Hello World应用程序作为独立的Java应用程序运行,也可以创建可执行jar。

1.通过使用Eclipse IDE本身的main方法(FirstSpringBootApp.java)运行类,可以将其作为独立的Java应用程序运行。

右键单击FirstSpringBootApp.java –运行方式– Java应用程序

2.依赖性spring-boot-starter-parent也提供了一个运行目标,我们可以用来启动应用程序。从根项目目录键入mvn spring-boot:run以启动应用程序。

从控制台上的输出中,我们可以看到已配置Web服务器,初始化了WebApplicationContext并自动完成了所有操作。

2019-07-19 13:26:25.989  INFO 14944 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
2019-07-19 13:26:26.040  INFO 14944 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2019-07-19 13:26:26.042  INFO 14944 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.21]
2019-07-19 13:26:26.223  INFO 14944 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2019-07-19 13:26:26.224  INFO 14944 --- [           main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 2412 ms
2019-07-19 13:26:26.589  INFO 14944 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2019-07-19 13:26:26.897  INFO 14944 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2019-07-19 13:26:26.910  INFO 14944 --- [           main] com.theitroad.app.FirstSpringBootApp       : Started FirstSpringBootApp in 3.83 seconds (JVM running for 16.239)

我们可以通过打开http:// localhost:8080 / theitroad访问该应用程序

/ theitroad是name参数的值。

创建可执行jar

要创建完全独立的可执行jar文件,请从命令行运行mvn软件包

F:\theitroad\Spring WorkSpace\SpringBootProject>mvn package

[INFO] Scanning for projects...
[INFO]
[INFO] -----------------------------------------------------------------------
[INFO] Building SpringBootProject 0.0.1-SNAPSHOT
[INFO] -----------------------------------------------------------------------
[INFO] --- maven-jar-plugin:3.1.2:jar (default-jar) @ SpringBootProject --
[INFO] Building jar: F:\theitroad\Spring WorkSpace\SpringBootProject\target\SpringBootProject-0.0.1-SNAPSHOT.jar
[INFO]

要使用创建的jar运行应用程序,请使用java -jar命令,如下所示:

java -jar target\SpringBootProject-0.0.1-SNAPSHOT.jar