SpringBoot教程:创建Hello World应用程序

Java技术 潘老师 9个月前 (08-09) 463 ℃ (0) 扫码查看

SpringBoot 是一种广泛流行的框架,通常用于构建整体式 MVC 应用程序、实时应用程序以及微服务。对于 Web 应用程序,Spring Boot 提供了用于创建 REST API、处理 HTTP 请求以及使用Thymeleaf等模板引擎渲染视图的工具。同样,对于微服务,Spring Boot通过使用其服务发现、负载均衡和配置管理等功能来支持Spring Cloud 。

本文向初学者介绍了 Spring boot 框架,以及创建第一个提供 hello world 消息的Spring boot 项目的分步指南。

1. Spring Boot简介

Spring Boot 是一个开源框架,可简化基于 Spring 的独立生产级应用程序的开发。Spring Boot 构建在 Spring 框架之上,提供各种工具、库和约定来简化应用程序的配置和部署。

Spring Boot 对 Spring 平台和第三方库持固执己见的观点。当我们在类路径中添加这些库时,Spring boot 会自动配置库中最明显需要的某些功能。尽管如此,它允许覆盖、自定义或完全禁用任何模块或库的自动配置。

例如,如果我们想在应用程序中添加持久性功能,我们只需spring-boot-starter-data-jpa在项目中添加依赖项,它就会自动执行以下操作:

  • 包括必要的依赖项,例如 Jakarta Persistence API (JPA) 和Hibernate等。
  • 设置DataSourceEntityManagerFactory和事务管理。
  • 扫描应用程序的类路径中的@Entity类并将它们注册到上下文中。
  • 扫描JpaRepository或相关接口并配置它们。
  • application.properties读取数据库连接属性并设置与指定数据库的连接。
  • 配置默认连接池以优化数据库连接并有效地重用它们。

如果没有 Spring Boot,我们将自己单独配置上述所有功能。Spring Boot 自动配置消除了这种痛苦,并为我们做了一切。我们可以进一步创建特定的 bean 或编写自定义属性来自定义上面列出的任何功能。

1.1. Spring Boot 的显着特点

Spring Boot框架在任何普通应用程序中都提供以下功能:

  • Spring Boot Starters:Starters 是常见用例的预配置模板,例如 Web 应用程序、持久性、消息传递等。我们在简介部分讨论了data-jpa 或持久性启动器。
  • 自动配置:Spring Boot 使用约定优于配置的方法,并根据项目的依赖项和设置自动配置 bean。
  • 嵌入式服务器:Spring Boot 包含嵌入式 servlet 容器(默认为Tomcat)来运行应用程序,而无需外部服务器。
  • 生产就绪功能:Spring Boot 提供生产就绪功能,例如运行状况检查、指标、安全性和外部化配置。

1.2. Spring Boot 的局限性和缺点

一切都是有代价的。Spring Boot 也不例外。以下是使用 Spring Boot 的限制或缺点:

  • 初始学习曲线:Spring boot 在幕后自动完成了很多事情,以至于对于新开发人员来说,跟踪所有事情可能会变得难以承受。如果没有 Spring boot,当我们自己编写所有内容时,这需要时间,但会给我们更多的控制力和信心。
  • 使用非标准库时的灵活性有限:Spring Boot 的自动配置方法可能并不总是符合特定的项目需求。例如,Spring Boot 自动将HikariCP配置为默认连接池实现。假设,我们希望在组织内部有一个自定义连接池。在这种情况下,编写和使用自定义 bean 和自定义非标准属性可能与 Spring boot 的自动配置不太一致。
  • 复杂的调试:借助自动配置和幕后魔力,调试复杂的问题可能具有挑战性。开发人员可能无法完全了解组件如何连接和一起运行。

2. Spring Boot应用程序的先决条件

在我们开始开发第一个应用程序之前,请确保我们具备以下条件:

  • Java开发工具包(JDK):Spring Boot在Java上运行。对于 Spring Boot 3.x,所需的最低版本是 Java 17。Spring Boot 2.x 至少需要 JDK 8 或更高版本。
  • 构建工具Maven 或 Gradle 等构建工具将有助于管理项目的依赖项和构建过程。
  • 集成开发环境 (IDE):虽然也可以在文本编辑器中编码和运行应用程序,但使用 IntelliJ IDEA、Eclipse 或 Visual Studio Code 等 IDE 有助于实现代码完成、自动编译、调试等功能,和项目管理。

此外,还需要具备 Java 编程和 Spring 框架的基本知识。它将帮助您更深入地了解 Spring boot 的魔力。

3. 创建一个新的Spring Boot项目

对于初学者来说,创建新的 Spring boot 项目的最简单方法是使用Spring Initializr网站。它允许我们在一个屏幕中选择首选的构建工具、Java 版本和项目依赖项。选择所有首选项后,我们可以将项目下载为 zip 文件并将其作为现有 Maven 项目导入到 IDE 中。在这个演示中,我们可以使用IntelliJ Idea来编写和执行代码。

4. 揭秘生成的代码

让我们了解应用程序中的代码结构和生成的文件。

4.1. 项目结构

项目中创建的主要目录有:

  • /src/main/java:包含应用程序的 Java 源代码。我们在这个目录中编写所有新的类和接口。
  • /src/test/java:包含应用程序的测试代码。所有新的单元测试都位于此目录中。
  • /src/main/resources:包含应用程序使用的非 Java 资源。例如,属性文件、视图文件、配置文件等。

当我们构建应用程序时,所有编译的文件都会进入/target目录。构建工具从此目录生成部署存档文件(.jar 或 .war 文件)。

4.2. 生成的文件

该工具生成的主要文件有:

MyFirstAppApplication.java

它包含main()方法,该方法是应用程序运行时的起点。它包含@SpringBootApplication注释。它在内部触发 bean 自动配置和组件扫描,配置应用程序中的所有 bean 并将它们注册到应用程序上下文。

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

@SpringBootApplication
public class MyFirstAppApplication {

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

MyFirstAppApplicationTests.java

它包含用于对应用程序代码进行单元测试的 Junit 5 测试。我们可以在包中创建更多这样的类。

@SpringBootTest
class MyFirstAppApplicationTests {

  @Test
  void contextLoads() {
  }
}

应用程序属性

它包含配置特定模块所需的默认属性。默认情况下,它是空的。

pom.xml

它是管理项目的依赖项和其他库的构建文件。我们可以在此文件中添加或删除依赖项。

请注意,spring-boot-starter-parent是一个特殊的 Maven 项目,充当所有 Spring Boot 应用程序的父 POM 或超级 POM。它的版本控制启动模块提供的默认功能和依赖库的版本。

spring -boot-maven-plugin是 Spring 团队提供的 Maven 插件。它简化了构建和打包 Spring Boot 应用程序的过程,使它们可执行且易于部署。

<?xml version="1.0" encoding="UTF-8"?>
<project ...>
  <modelVersion>4.0.0</modelVersion>

  <!-- The parent is always the spring-boot-starter-parent -->
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.1.1</version>
    <relativePath/> <!-- lookup parent from repository -->
  </parent>

  <groupId>com.panziye.demo</groupId>
  <artifactId>my-first-app</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>my-first-app</name>
  <description>My First Application with Spring Boot</description>

  <properties>
    <java.version>17</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>

5. 编写你的第一个控制器

生成的应用程序仅提供必要的基础设施,我们必须编写针对最终用户的额外业务逻辑。例如,我们可以编写一个简单的 REST API,它接受用户的输入、连接到后端数据库并以 JSON/XML 格式返回适当的响应。

在本教程中,我们将编写一个简单的 API,用于返回消息'Hello, World!'作为响应。我们创建一个新类HelloWorldController并编写以下代码。

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloWorldController {

  @GetMapping("hello")
  String hello() {
    return "Hello, World!";
  }
}

6. 构建应用程序

创建控制器后,我们可以在 IDE 本身中测试 API 代码,这就是 IDE 提供帮助的地方。

如果我们不使用 IDE,则必须编译应用程序并将应用程序构建为可执行 jar。该 jar 文件可以作为普通应用程序从命令行运行。

mvn build

它会在/target目录中生成一个名为my-first-app-0.0.1-SNAPSHOT.jar的 jar 文件。我们可以在pom.xml文件中自定义生成的jar文件的名称。

<build>
  <finalName>my-first-spring-boot-app</finalName>
  <plugins>
    <plugin>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>
  </plugins>
</build>

现在我们再次运行“mvn package”命令,它会创建名称为my-first-spring-boot-app.jar 的jar 文件。

7. 运行和测试应用程序

要在开发环境中运行应用程序,如上一节所述,我们可以直接从 IDE 运行。为此,右键单击MyFirstAppApplication.java并选择该'Run MyFirstAppApplication.main()'选项。

上面的命令在自动包含在spring-boot-starter-web模块中的嵌入式 Tomcat 服务器中运行应用程序。

要从终端或命令提示符运行应用程序,我们可以使用以下命令:

mvn spring-boot:run

它从终端启动应用程序,我们可以在打印的日志中验证相同的情况。

[INFO] Scanning for projects...
[INFO]
[INFO] ----------------< com.panziye.demo:my-first-app >-----------------
[INFO] Building my-first-app 0.0.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] Attaching agents: []

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v3.1.2)

2023-08-09T16:40:26.550+05:30  INFO 21616 --- [main] c.h.demo.MyFirstAppApplication           : Starting MyFirstAppApplication using Java 19-loom with PID 21616 (C:\Users\lokes\Downloads\my-first-app\my-first-app\target\classes started by lokesh in C:\Users\lokes\Downloads\my-first-app\my-first-app)
...
...
...
2023-08-09T16:40:28.085+05:30  INFO 21616 --- [main] c.h.demo.MyFirstAppApplication           : Started MyFirstAppApplication in 2.091 seconds (process running for 2.486)

应用程序启动后,我们可以访问 hello world API 来验证一切是否按预期工作。

curl -X GET http://localhost:8080/hello

//Prints Hello, World!

8. 常见问题解答

8.1. 如何使用 Maven 创建新的 Spring Boot 应用程序?

使用 Maven 创建 Spring boot 项目与创建任何其他普通 Web 项目类似。创建项目后,我们必须添加pom.xml以引用父 pom spring-boot-starter-parent并创建/修改其他文件。

mvn archetype:generate -DgroupId=com.panziye.demo \
-DartifactId=my-first-app \
-DarchetypeArtifactId=maven-archetype-quickstart \
-DinteractiveMode=false

8.2. 如何使用 Spring Boot CLI 创建新的 Spring Boot 应用程序?

Spring Boot CLI是一个命令行工具,用于简化 Spring Boot 应用程序的开发。它提供了一种快速创建、开发和测试 Spring Boot 项目的便捷方法,无需设置复杂的项目结构或手动配置依赖项。

我们可以从Spring Boot官方网站下载CLI,或者使用像SDKMAN这样的包管理器来安装它。

安装 CLI 后,导航到我们要创建项目的目录,然后运行以下命令:

spring init --dependencies=web \
--build=maven \
--groupId=com.panziye.demo \
--artifactId=my-first-app \
--name=MyFirstApp

它将从头开始创建一个 Spring boot 应用程序,您可以在您最喜欢的 IDE 中打开该项目并开始进行更改。

8.3. 如何在 IntelliJ(或任何其他 IDE)中创建 Spring Boot 应用程序?

在 IntelliJ 或任何其他 IDE 中创建新的 Spring Boot 项目与任何其他非 Spring Boot 应用程序类似。我们通过选择适当的maven坐标和属性来创建一个普通的Java项目。

创建项目后,我们必须修改父pom引用的pom.xml并导入额外的spring boot启动器模块和插件。

9. 总结

本 Spring Boot 教程涉及该框架的最基本概念,包括特性、优点和缺点。然后我们讨论了引导简单 Spring Boot 项目的不同方法,例如使用 Spring Initializr 门户、命令行和 IDE(例如 IntelliJ)。

我们开发了一个简单的 REST API,构建了项目并将其部署在嵌入式 Tomcat 服务器中。最后,我们测试了 API,本次 Spring boot 入门教程就结束了。


版权声明:本站文章,如无说明,均为本站原创,转载请注明文章来源。如有侵权,请联系博主删除。
本文链接:https://www.panziye.com/java/7886.html
喜欢 (0)
请潘老师喝杯Coffee吧!】
分享 (0)
用户头像
发表我的评论
取消评论
表情 贴图 签到 代码

Hi,您需要填写昵称和邮箱!

  • 昵称【必填】
  • 邮箱【必填】
  • 网址【可选】