vlambda博客
学习文章列表

读书笔记《building-applications-with-spring-5-and-kotlin》正在启动

Starting Up

欢迎!您正在开启一段通往未知的漫长旅程:Spring Framework 的未知王国。幸运的是,您有合适的向导和好伙伴!你有我们!在本书中,您将了解 Spring Framework 是什么以及它在现代 Web 应用程序开发中的强大功能。我们将教您使用该框架的所有工作流程,并指导您完成一个真实的应用程序示例。准备好学习吧!

本章将涵盖以下几点:

  • Defining your mission
  • Separating code into independent entities
  • Planning your environment
  • Preparing the working environment
  • Setting up a Git repository

What is your mission?

正如我们所提到的,您的任务将是制作一个真实世界的应用程序。有什么比从头开始构建真实的东西到生产部署更好的学习路径呢?我们的真实应用示例将有一个真实的主题!

我们将创建一个 REST 应用程序,它将代表其他应用程序的应用程序编程接口(API)。我们应用程序的主题很简单:管理用户注释和 TODO。

想象一下,有一个管理所有这些笔记和 TODO 的真实世界的移动应用程序。该应用程序将需要一个 REST API,以便将所有数据同步到后端。故事很简单。用户创建注释或 TODO。然后,用户的移动应用程序会在某个时候进行同步。一段时间后,用户更新其中的内容。同样,数据与远程后端实例同步。然后,一年后,用户购买了一台运行普通移动应用程序的新设备。幸运的是,移动应用程序将与远程后端实例同步再次并获取用户创建的所有 Notes 和 TODO。

那么,这个 REST API 会做什么呢?

它将向最终用户公开所有 创建、读取、更新和删除 (CRUD) 操作的 API 调用。我们创建或修改的数据将存储在持久层中。在我们的例子中,这将是 MySQL 数据库。使用 Spring Security,我们将创建用户角色,以便某些用户配置文件可以执行各种操作,例如创建其他用户或修改主应用程序内容。为了让事情变得更有趣,我们将创建负责各种任务的微服务。

在我们部署之前,我们将首先使用适当的测试来测试我们的代码。我们还将编写单元测试。所有测试都将涵盖一些核心功能,以便我们的应用程序足够稳定以进行部署。我们将部署到 Apache Tomcat 和 Amazon AWS Elastic Beanstalk。

Separating code into independent entities

在我们开始实现之前,我们将把我们的代码分成独立的实体。每个实体将涵盖一个单一的职责,因此将在我们涵盖某个 Spring 功能时实现。

我们将从代表我们实际处理的数据的主要类开始:Notes 和 TODO。然后我们将描述与用户相关的东西:用户本身以及我们计划分配给他们的角色。稍后,当我们真正实现它们中的大部分时,我们将引入一些新实体来涵盖额外的职责。这将在 第 3 章中解释,Building您的第一个使用 Kotlin 的 Spring RESTful 服务

Describing entities

我们将使用并保存数据的主要实体是 Notes 和 TODO。我们可以将它们中的每一个视为将被存储并具有共同属性的条目:

  • ID: Universally Unique IDentifier (UUID) String
  • Title: String
  • Message: String
  • Location: String value that represents serialized Location class into JSON.

以下是我们使用的所有实体:

  • Note: The Note entity will represent Notes in the system with all common attributes.
  • TODO: The TODO entity will represent TODOs in the system with all common attributes and timestamps for a scheduled time.
  • User: The User entity will be completely independent of the main data entities. The user will represent the user and all the attributes that the user of the system can have, including assigned roles. The user will have the following attributes:
    • ID: UUID String
    • Email: String
    • Password: String
    • First name: String
    • Last name: String
    • Roles: String
  • Enabled: Boolean representing whether the user has activated the account or whether it has been activated by the user from a higher user hierarchy
  • Created on: Long representing UTC timestamp when the user was created
  • Updated on: Long representing UTC timestamp when the user was updated

在后期阶段,如果需要,我们可以引入其他属性。现在,我们将坚持我们刚刚描述的最重要的那些。

Planning your development

对于你做的每一个项目,无论是大型复杂的项目,还是小型的项目,规划都是至关重要的! 我们会按照章节结构来规划我们的发展这本书。所以,有些事情会先做,有些事情会后做。您可能已经意识到,当我们谈到 Spring Security 时,将提供与用户相关的功能。在此之前,我们将专注于主要数据实体及其与 Spring Framework 和 API 客户端的关系。

在深入实施之前,先计划好工作是明智的。正如我们已经做过的那样,您应该识别所有实体以及它们之间的关系。您必须意识到它们之间潜在的硬联系。最好的情况是每个实体完全独立,不知道其他实体。在我们的例子中,用户实体不知道我们的主要数据实体、Notes 和 TODO,反之亦然。

然后,如果我们把所有这些都写在纸上,我们就可以考虑我们将拥有什么样的环境。一种常见的做法是我们拥有开发、登台和生产环境。对于较大的项目,有时还会使用预生产环境。在我们的例子中,我们也将拥有一个本地开发环境。本地开发环境将是我们将用于所有这些练习的环境。我们将使用运行 MySQL 实例和 Spring Framework 应用程序的本地工作机器。

您必须计划如何部署应用程序。例如,应用程序可以在 Apache Tomcat 或 Amazon AWS 上运行。这些不是唯一的选项 可用。根据您的需要,您将选择合适的部署平台和部署方案。我们将在 第 10 章中更详细地讨论这个问题,< span>项目部署

Preparing the working environment

最后,是时候准备我们的工作环境了。我们将准备开发和运行我们的应用程序所需的所有软件。对于此过程,我们将需要以下内容:

  • Git
  • JDK
  • IDE
  • Spring 5
  • Postman

对于合适的开发机器,您可以使用任何具有例如 i5 处理器(或更强大)和至少 8 GB RAM 的计算机。这些是主要特征。您可以在 Microsoft Windows、Linux 或 macOS 上进行开发。本书中提到的所有开发都是在 macOS Sierra(版本 10.12.6)上完成的。

Installing Git

我们将使用 Git 作为我们的版本控制系统。要安装它,请按照您的操作系统的步骤进行操作。我们将提供以下指导:

  • Microsoft Windows
  • Linux (Debian, Ubuntu, Fedora, and raw source code)
  • macOS

Microsoft Windows

以下是在 Microsoft Windows 上安装 Git 的步骤:

  1. Download Git for Microsoft Windows from the following location: https://git-for-windows.github.io/.
  2. Start the installer and follow the instructions.
  3. Open the Command Prompt.
  4. Configure Git with the following commands:
$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"

macOS

要在 macOS 上安装 Git ,我们建议您使用 App Store 中的命令行工具安装 Xcode。然后,打开终端并验证 Git 版本:

$ git -version 
git version 2.7.0 (Apple Git-66)  

Linux

按照您的发行版的安装步骤

Debian and Ubuntu

以下是在 Debian 和 Ubuntu 上安装 Git 的步骤:

  1. Open Terminal.
  2. Use the following commands to start the installation:
$ sudo apt-get update 
$ sudo apt-get install git
  1. Verify the installation:
$ git -version
  • The output should be something like the following:
git version 2.9.2 
  1. Configure Git with the following commands:
$ git config --global user.name "Your Name" 
$ git config --global user.email "[email protected]"

Fedora

以下是在 Fedora 上安装 Git 的步骤:

  1. Open Terminal.
  2. Depending on your Fedora version, use YUM or DNF to install Git as follows:
$ sudo dnf install git 
//or
$ sudo yum install git
  1. Verify the installation:
$ git -version
  • The output should be something like the following:
git version 2.9.2
  1. Configure Git with the following commands:
$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"

Building Git from the source code

如果你更喜欢从源代码构建你的东西​​,你可以用 Git 做同样的事情。

Debian and Ubuntu

要从源代码构建,您需要安装一些依赖项:

  1. Open Terminal and install the following dependencies:
$ sudo apt-get update
$ sudo apt-get install libcurl4-gnutls-dev libexpat1-dev gettext libz-dev libssl-dev asciidoc xmlto docbook2x
  1. Navigate to your preferred directory.
  2. Clone the Git source code as follows:
$ git clone https://git.kernel.org/pub/scm/git/git.git
  1. Build Git as follows:
$ make all doc info prefix=/usr
$ sudo make install install-doc install-html install-info install-man prefix=/usr
我们在 /usr 目录。如果您愿意,请使用不同的文件系统位置。

Fedora

以下是从源代码构建的步骤:

  1. As was the case with Debian and Ubuntu, install the dependencies needed to build Git as follows:
$ sudo dnf install curl-devel expat-devel gettext-devel openssl-devel perl-devel zlib-devel asciidoc xmlto docbook2X
  • If you have an older version of Fedora, run the following commands:
$ sudo yum install epel-release
$ sudo yum install curl-devel expat-devel gettext-devel openssl-devel perl-devel zlib-devel asciidoc xmlto docbook2X
  1. Symlink docbook2X to the filename that the Git build expects:
$ sudo ln -s /usr/bin/db2x_docbook2texi /usr/bin/docbook2x-texi
  1. Navigate to your preferred directory.
  2. Clone the Git source code as follows:
$git clone https://git.kernel.org/pub/scm/git/git.git
  1. Finally, build Git:
$ make all doc prefix=/usr
$ sudo make install install-doc install-html install-man prefix=/usr
我们在 /usr 目录。如果您愿意,请使用不同的文件系统位置。

恭喜!你已经在你的机器上安装了 Git 版本控制系统!您已准备好创建将保留您的代码的存储库。我们将在设置 Git 存储库 部分执行此操作。

Installing JDK

如您所知,我们将使用 Kotlin 作为我们的主要开发语言。但是,我们需要在系统上安装 Java,因为 Kotlin 是在 JVM 上执行的。打开 Java JDK 主页并根据您的操作系统版本选择正确的安装:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

支持以下平台:

  • Linux ARM 32 Hard Float ABI
  • Linux ARM 64 Hard Float ABI
  • Linux x86
  • Linux x86
  • Linux x64
  • Linux x64
  • macOS X
  • Solaris SPARC 64-bit
  • Solaris SPARC 64-bit
  • Solaris x64
  • Solaris x64
  • Windows x86
  • Windows x64

根据您的操作系统版本按照说明进行操作。

Microsoft Windows

以下是在 Microsoft Windows 中安装 JDK 的步骤:

  1. Download the proper executable for your version of Microsoft Windows
  2. Execute the downloaded file
  3. Follow the instructions

Linux

这里是在Linux中安装JDK的步骤:

  1. Download the proper RPM Package Manager (RPM) installation package for your platform.
  2. Open Terminal and install the package:
$ rpm -ihv package_you_downloaded.rpm
  1. Verify you have installed the Java version:
$ java -version

macOS

以下是macOS中安装JDK的步骤:

  1. Download the dmg file for your macOS.
  2. Double-click on the dmg file to run it.
  3. Double-click on the PKG icon to launch the installation.
  4. Follow the installation instructions. Enter your system credentials if asked.
  5. Verify that the Java version from Terminal:
$ java -version
java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)

恭喜! Java 已启动并运行!接下来我们要做的是设置我们的 IDE。

Installing the IDE

我们选择 IntelliJ IDEA 作为我们的 IDE。不幸的是,IDEA 不是免费的。它是商业软件。您可以购买许可证或使用 IntelliJ IDEA Community Edition、Eclipse 或 NetBeans 来运行它。按照特定操作系统的安装说明进行操作。

Microsoft Windows

Linux

以下是在 Linux 中安装 IDEA 的步骤:

  1. Download IntelliJ IDEA from the JetBrains website: https://www.jetbrains.com/idea/download/#section=linux.
  2. Unpack the ideaIC.gz or ideaIU.gz file you have downloaded.
  3. Switch to the directory where you extracted IntelliJ IDEA.
  4. Execute the idea.sh script.

macOS

以下是在 macOS 中安装 IDEA 的步骤:

  1. Download IntelliJ IDEA from the JetBrains website: https://www.jetbrains.com/idea/download/#section=macos.
  2. Double-click the ideaIC.dmg or ideaIU.dmg file you have downloaded to mount the macOS disk image.
  3. Copy IntelliJ IDEA to the Applications folder.

Starting IntelliJ for the first time

您已经安装了 IntelliJ;现在是第一次运行的时候了。您将被要求进行一些配置。别担心,一切都简单易行。只需按照说明进行操作:

  1. Launch IntelliJ and wait until the Complete Installation dialog appears. Choose Don't import settings and continue by clicking on OK.

  1. Next, you will be prompted to select the UI theme. You can choose between the default theme and the Darcula theme. We recommend that you use the Darcula theme:
读书笔记《building-applications-with-spring-5-and-kotlin》正在启动
  1. In the next section, disable any plugins that are not required:
读书笔记《building-applications-with-spring-5-and-kotlin》正在启动
  1. In the next step, you are prompted to download additional plugins:
读书笔记《building-applications-with-spring-5-and-kotlin》正在启动
  1. Finally, you can start the project! The setup is complete, as shown in the following screenshot:
读书笔记《building-applications-with-spring-5-and-kotlin》正在启动

Installing Spring 5

在安装或运行 Spring 5 之前,我们需要安装 Kotlin,因为这是我们项目的主要编程语言:

  1. Open IntelliJ IDEA and choose Configure | Plugins, as shown in the following screenshot:
读书笔记《building-applications-with-spring-5-and-kotlin》正在启动
  1. In the search field, type Kotlin:
读书笔记《building-applications-with-spring-5-and-kotlin》正在启动
  1. Click on the Install JetBrains plugin... button.

  1. From the list that appears, choose Kotlin.
  2. If you do not already have Kotlin installed, you will see a green Install button. Click on it, otherwise click on the Update button, as shown in the following screenshot:
读书笔记《building-applications-with-spring-5-and-kotlin》正在启动
  1. Wait until the installation or update process completes:
读书笔记《building-applications-with-spring-5-and-kotlin》正在启动
  1. When the installation is finished, click on the Restart IntelliJ IDEA button:
读书笔记《building-applications-with-spring-5-and-kotlin》正在启动

如果 Restart IntelliJ IDEA 按钮没有重新启动您的 IDE,请自己手动执行。

您的 IDE 已准备好进行开发。是时候终于设置 Spring 5 了!您可以像使用任何标准 Java 库一样使用 Spring。只需在类路径中包含适当的 Spring 库文件。 Spring 不需要任何特殊的工具集成,因此您可以使用任何 IDE 或文本编辑器!如您所知,我们将坚持使用 IntelliJ IDEA。您可以像运行任何其他 Java 应用程序一样运行和调试 Spring 应用程序。

Spring 可以通过 Maven 或 Gradle 使用。由您来选择更适合您的。我们将在开发中使用 Gradle,但我们也会给出 Maven 的示例。

Maven installation

在项目中开始使用 Spring Framework 的推荐方法是使用依赖管理系统。看一下以下 Maven 示例:

<dependencies> 
    <dependency> 
        <groupId>org.springframework</groupId> 
        <artifactId>spring-context</artifactId> 
        <version>5.0.0.RC4</version> 
    </dependency> 
</dependencies><repositories> 
    <repository> 
        <id>spring-milestones</id> 
        <name>Spring Milestones</name> 
        <url>https://repo.spring.io/libs-milestone</url> 
        <snapshots> 
            <enabled>false</enabled> 
        </snapshots>      
    </repository>  
</repositories>

Gradle installation

Gradle 安装需要更少的代码,如以下代码段所示:

repositories { 
    maven { 
        url 'https://repo.spring.io/libs-milestone' 
    } 
}  
dependencies { 
    compile 'org.springframework:spring-context:5.0.0.RC4' 
 
} 

Installing Postman

要尝试我们的 API 调用,我们需要 Postman。 Postman 是一个完整的 API 开发工具链。 Postman 的设计初衷就是支持 API 开发人员。它为我们提供了一个直观的用户界面来发送请求、保存响应、添加测试和创建工作流。

要获取 Postman,请打开 https://www.getpostman.com/postman 并选择您的操作系统。

Microsoft Windows installation

以下是在 Microsoft Windows 中安装 Postman 的步骤:

  1. Download the setup file
  2. Run the installer
  3. Follow the setup instructions

Linux installation

为了简化安装过程,我们建议您通过 Google Chrome 商店安装。搜索 Postman 并安装它:

读书笔记《building-applications-with-spring-5-and-kotlin》正在启动

macOS installation

下载 Postman 存档的应用程序后,将其解压缩,然后将文件拖到 Applications 文件夹。双击 Postman 打开应用程序。

邮递员已安装。运行它并查看它的 UI。我们不会详细介绍如何使用它。玩一点就够了。大多数选项都是不言自明的。享受!

以下屏幕截图显示了在 macOS 上运行的 Postman 应用程序:

读书笔记《building-applications-with-spring-5-and-kotlin》正在启动

Setting up a Git repository

我们已经安装了 IDE 和 Spring Framework。是时候开始我们的项目了。我们将为 Notes 和 TODO 开发一个 REST 应用程序 API。这是每个人都需要的工具。我们将给它起一个名字:Journaler API。 Journaler API 将是一个 REST 应用程序,能够创建带有提醒的笔记和 TODO。许多不同的应用程序,例如移动应用程序,将同步到我们运行此 REST 应用程序的后端实例。

开发的第一步是初始化 Git 存储库。 Git 将是我们的代码版本控制系统。由您决定是否将 GitHub、BitBucket 或其他东西用于远程 Git 实例。创建您的远程存储库并将其 URL 与您的凭据一起准备好。那么,让我们开始吧!

以下是设置 Git 的步骤:

  1. Go into the directory containing the project.
  2. Execute the following command:
$ git init .
  1. The console output will be something like the following:
Initialized empty Git repository in <directory_you_choose/.git>
  1. We have initialized the repository. Now let's add the first file by executing the following command:
$ vi notes.txt
这里我们使用 vi 编辑器来编辑 notes.txt。如果你熟悉其他一些 编辑, 使用它。
  1. Populate notes.txt with some content and save it.
  2. To add all of the relevant files, execute the following commands:
$ git add .
$ git commit -m "Journaler API: First commit"
  1. The console output will be something like the following:
[master (root-commit) 5e98ea4] Journaler API: First commit
 
1 file changed, 1 insertion(+)
 
create mode 100644 notes.txt
  1. Use the remote Git repository URL that you have prepared previously with credentials, and execute the following command:
$ git remote add origin <repository_url>
  • This sets the new remote.
  1. Execute the following command to verify the new remote URL:
$ git remote -v
  1. Finally, push everything we have to remote, by executing the following command:
$ git push -u origin master
  • If you are asked for credentials, enter them and confirm by pressing Enter.

Summary

这是激动人心的时刻!我们正准备深入到 Spring Framework 的深处。我们几乎准备好了!我们已经搭建好了环境!我们已经安装了 Git、Java JDK 和 IDE,向您展示了如何安装 Spring Framework,最后安装了 Postman。我们暂时跳过了 MySQL 的安装,但是一旦我们向您介绍 Spring 数据,我们就会回到它。

亲爱的读者,我们已经到了第一章的结尾。我们已经学习了如何设置和配置开发环境。在下一章中,我们将迈出进入 Spring 框架的第一步。我们将解释 Spring 是什么以及为什么需要它!我们将编写一些代码,运行它,然后触发我们的第一个 API 调用。所以,准备好!