Spring Boot Hello World应用程序
在本教程中,我们将介绍如何使用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