使用Spring Initializr的Spring Boot应用程序

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

在本教程中,我们将看到如何使用Spring Initializr(https://start.spring.io/)创建第一个Spring Boot应用程序

Spring初始化

Spring Initializr提供了一种快速的方法来创建自己的基于Spring Boot的项目。它提供了一个Web UI来填充项目相关的详细信息,并引导Spring Boot应用程序。填写完所有详细信息后,我们可以下载生成的构建文件或者捆绑的项目作为zip文件。

我们可以使用Spring Initializr选择的选项是

  • 构建系统-Maven或者Gradle
  • 语言-Java,Kotlin或者Groovy
  • Spring启动版
  • 项目元数据(组和工件),名称,Java版本,包装(Jar或者War)
  • 依赖性-这是最好的部分,我们可以在其中以启动器的形式选择所需的依赖性。

使用Spring Initializr的Spring Boot应用程序

要使用Spring Initializr创建Spring Boot应用程序,请转至https://start.spring.io/并填写所需的详细信息。

对于Spring Boot Hello World Web应用程序示例,选择的详细信息如下

项目– Maven项目(另一个选项是Gradle)
语言– Java
Spring Boot –选择的版本是2.1.6
项目元数据–分组为– com.theitroad
神器– SpringBootProject

点击选项向下按钮,我们可以提供

名称(预填为SpringBootProject)
包(预填为com.theitroad.SpringBootProject)
选择了PackagingJar(战争是另一个选择)
Java版本根据要求选择。 Spring Boot 2需要Java 8作为最低支持版本。

依赖关系–键入web,在建议的选项中为该Web应用程序选择Spring Web Starter。该入门程序添加了创建Spring Web应用程序所需的必要依赖关系,其中包括Tomcat作为默认的嵌入式容器。

单击"生成项目",然后将生成的zip文件保存在系统中。该zip文件包含基于我们在Spring Initialzr中选择的选项生成的Maven项目。

导入生成的Maven项目

我们可以将生成的Maven项目导入Eclipse IDE。

转到文件–导入– Maven –现有Maven项目

在"根目录"中,选择已解压缩下载的已压缩项目结构的位置。选择项目的pom.xml文件。

要查看构建文件,请打开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>
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.6.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
  </parent>
  <groupId>com.theitroad</groupId>
  <artifactId>SpringBootProject</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>SpringBootProject</name>
  <description>Demo project for Spring Boot</description>

  <properties>
    <java.version>12</java.version>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </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应用程序所需的必需依赖关系。

spring-boot-starter-test提取单元测试所需的所有依赖项,例如Spring Boot Test,JSONPath,JUnit,AssertJ,Mockito和Spring Test。

我们还将看到一个插件spring-boot-maven-plugin添加到pom.xml中。该插件提供了许多方便的功能

  • 它有助于创建可执行jar(über-jar),从而使执行和传输服务更加方便。
  • 它还搜索公共static void main()方法,以将具有此方法的类标记为可运行类。

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

Web应用程序类

Maven从src / main / java编译源代码,因此我们将发现该结构已创建,并且已经存在一个生成的应用程序类(SpringBootProjectApplication.java)。

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

@SpringBootApplication
public class SpringBootProjectApplication {
  public static void main(String[] args) {
    SpringApplication.run(SpringBootProjectApplication.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服务器。我们需要将SpringBootProjectApplication.class作为参数传递给run方法,以告诉SpringApplication哪个是主要的Spring组件。

在Application类之上,它本身为我们提供了一个可操作的Web应用程序,该Web应用程序在执行时会初始化Spring WebApplicationContext并还会初始化嵌入式Tomcat服务器。

我们将添加一个Rest Controller来演示此网络应用程序。

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注释使我们可以从请求路径中检索参数。

运行应用程序

我们可以将此Spring Boot Hello World应用程序作为独立的Java应用程序运行,也可以创建可执行jar。
1我们可以通过使用Eclipse IDE本身的main方法(FirstSpringBootApp.java)运行类,将其作为独立的Java应用程序运行。

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

在控制台中,我们将看到类似于以下内容的消息

2019-07-28 17:50:32.937  INFO 6712 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
2019-07-28 17:50:33.212  INFO 6712 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2019-07-28 17:50:33.214  INFO 6712 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.21]
2019-07-28 17:50:33.998  INFO 6712 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2019-07-28 17:50:33.999  INFO 6712 --- [           main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 5318 ms
2019-07-28 17:50:35.271  INFO 6712 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2019-07-28 17:50:35.941  INFO 6712 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2019-07-28 17:50:35.951  INFO 6712 --- [           main] c.k.S.SpringBootProjectApplication       : Started SpringBootProjectApplication in 9.125 seconds (JVM running for 11.574)

我们可以通过打开浏览器并将URL设置为http:// localhost:8080 / theitroad来访问Web应用程序

/ theitroad是name参数的值。

2创建可执行文件要创建完全独立的可执行jar文件,请从命令行运行mvn软件包。创建jar文件后,我们可以使用以下命令运行它。

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

同样,我们可以通过打开浏览器并将URL设置为http:// localhost:8080 / theitroad来访问Web应用程序