Contents

Spring Tool Suite 简介

1. 概述

本文说明了Eclipse Spring Tool Suite (STS) IDE 的一些有用特性,这些特性在开发Spring 应用程序 时很有用。

首先,我们展示了使用 STS 与使用 Eclipse 构建应用程序的传统方式相比的优势。

此后,我们专注于如何引导应用程序、如何运行它以及如何添加额外的依赖项。最后,我们通过添加应用程序参数来结束。

2. STS主要特点

STS 是一个基于 Eclipse 的开发环境,专为 Spring 应用程序的开发而定制。

它提供了一个现成的环境来实现、调试、运行和部署您的应用程序。它还包括与 Pivotal tc Server、Pivotal Cloud Foundry、Git、Maven 和 AspectJ 的集成。STS 是在最新的 Eclipse 版本之上添加的。

2.1. 项目配置

STS 了解几乎所有最常见的 Java 项目结构。它解析配置文件,然后显示有关已定义的bean 、依赖项、使用的命名空间的详细信息,此外还提取某些构造型的概述。

/uploads/eclipse_sts_spring/1.png

2.2. STS 功能概述

Eclipse STS 验证您的项目并为您的应用程序提供快速修复。例如,在使用 Spring Data JPA 时,IDE 可用于验证查询方法名称(第 6 节中对此进行了详细介绍)。

STS 还提供了所有 bean 方法及其相互关系的图形视图。您可能希望通过查看菜单窗口显示视图Spring下可用的视图来仔细查看 STS 附带的图形编辑器。

STS 还提供了其他有用的功能,不仅限于 Spring 应用程序。建议读者查看可在此处 找到的完整功能列表。

3. 创建 Spring 应用程序

让我们从引导一个简单的应用程序开始。如果没有 STS,通常使用Spring Initializer 网站或Spring Boot CLI 创建 Spring 应用程序。这可以通过单击STS 仪表板中的Create Spring Starter Project来简化。

New Spring Starter Project屏幕中,使用默认值或进行自己的调整,然后转到下一个屏幕。选择Web并单击完成。您的pom.xml现在应该类似于以下内容:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.4.0</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <java.version>1.8</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>

您的 Spring Boot 版本可能不同,但总能在此处 找到最新版本。

4. 运行应用程序

可以通过右键单击项目并选择 run as Spring Boot App来启动上述应用程序。如果没有 STS,您很可能会使用以下命令从命令行运行应用程序:

$ mvn spring-boot:run

默认情况下,Spring 应用程序在 8080 端口上运行的 Tomcat 启动。此时,应用程序在 8080 端口上启动,因为我们还没有实现任何代码,所以基本上什么都不做。第 8 节向您展示了如何更改默认端口。

5. 日志和 ANSI 控制台

当您使用运行命令从 IDE 运行项目时,您会注意到控制台输出了一些漂亮的彩色 日志语句。如果您想关闭它,请转到运行配置……并禁用Spring Boot选项卡上的启用 ANSI 控制台输出复选框。或者,您也可以通过在application.properties文件中设置属性值来禁用它。

spring.output.ansi.enabled=NEVER

可以在此处 找到有关应用程序日志配置的更多信息。

6. JPA 查询名称检查

有时实现数据访问层可能是一项繁琐的活动。可能必须编写大量样板代码来实现简单的查询和执行分页。Spring Data JPA (JPA) 旨在显着促进数据访问层的这种实现。本节说明了将 JPA 与 STS 结合使用的一些好处。

首先,将 JPA 的以下依赖项添加到先前生成的pom.xml中:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
</dependency>

您可能已经注意到上面的声明中没有指定版本。这是因为依赖项由spring-boot-starter-parent管理。

要使 JPA 工作,您需要正确定义实体管理器和事务管理器。但是,Spring 会为您自动配置这些。留给开发人员的唯一事情就是创建实际的实体类。这些实体由实体管理器管理,而实体管理器又由容器创建。例如,让我们像这样创建一个实体类Foo

@Entity
public class Foo implements Serializable {
    @Id
    @GeneratedValue
    private Integer id;
    private String name;
    // Standard getters and setters
}

容器从配置包的根目录扫描所有使用*@Entity注解的类。接下来,我们为Foo*实体创建一个 JPA 存储库:

public interface FooRepository extends JpaRepository<Foo, Integer> {
    public Foo findByNames(String name);
}

此时您可能已经注意到 IDE 现在将此查询方法标记为异常:

Invalid derived query! No property names found for type Foo!

这当然是因为我们不小心在 JPA 存储库的方法名称中写了一个“s”。要解决此问题,请像这样删除虚假的 ’s’:

public Foo findByName(String name);

请注意,配置类上没有使用*@EnableJpaRepositories*。这是因为容器的AutoConfigration为项目预注册了一个。

7. 罐子类型搜索

“Jar Type Search”是STS 3.5.0 中引入的一项功能。它在项目中为尚未(尚未)在类路径上的类提供内容辅助建议。STS 可以帮助您将依赖项添加到您的 POM 文件中,以防它们尚未在类路径中。

例如,让我们在Foo实体类中添加一行。为了让这个例子正常工作,请首先确保java.util.List的 import 语句已经存在。现在我们可以按如下方式添加 Google Guava:

private List<String> strings = Lists // ctrl + SPACE to get code completion

IDE 将建议将几个依赖项添加到类路径中。从com.google.common.collect 添加依赖,按回车并从Guava添加依赖。Guava jar 现在将自动添加到您的pom.xml文件中,如下所示:

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>31.0.1-jre</version>
</dependency>

从版本STS 3.8.0 开始,在 STS 对您的pom.xml进行更改之前,您会看到一个确认对话框。

8. 添加应用程序参数

Spring 的其他强大功能之一是支持外部配置,这些配置可以通过多种方式传递给应用程序,例如作为命令行参数、在属性或 YAML 文件中指定或作为系统属性。在本节中,我们将重点介绍使用 STS 添加配置选项作为应用程序启动参数。这可以通过将 Tomcat 配置为在不同的端口上启动来说明。

为了在默认端口以外的 Tomcat 端口上运行应用程序,您可以使用以下命令,其中自定义端口指定为命令行参数:

mvn spring-boot:run -Drun.arguments="--server.port=7070"

使用 STS 时,您必须进入运行菜单。从 Run Configurations 对话框中选择运行配置…,从左侧面板中选择Spring Boot App并选择demo – DemoApplication(如果您没有选择默认项目,这将有所不同)。From (x)= Arguments选项卡类型在Program Arguments窗口中

--server.port=7070

运行。您应该会在控制台中看到类似于如下所示的输出:

.
.
2016-07-06 13:51:40.999  INFO 8724 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 7070 (http)
2016-07-06 13:51:41.006  INFO 8724 --- [           main] com.blogdemo.boot.DemoApplication        : Started DemoApplication in 6.245 seconds (JVM running for 7.34)