Eclipse STS中的Spring指南

2023/05/12

一、概述

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

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

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

二、STS主要特点

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

它提供了一个随时可用的环境来实施、调试、运行和部署你的应用程序。它还包括对 Pivotal tc Server、Pivotal Cloud Foundry、Git、Maven 和 AspectJ 的集成。STS 是作为对最新 Eclipse 版本的补充而构建的。

2.1. 项目配置

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

弹簧豆快照

2.2. STS 功能概述

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

STS 还提供了所有 bean 方法及其相互关系的图形视图。你可能希望通过分别查看菜单window、show view和Spring下可用的视图来更仔细地了解 STS 附带的图形编辑器。

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

3. Spring 应用程序的创建

让我们从引导一个简单的应用程序开始。如果没有 STS,通常使用Spring Initializer网站或Spring Boot CLI创建 Spring 应用程序。这可以通过在 STS 的仪表板上单击“创建 Spring 入门项目”来简化。

在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. 运行应用

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

$ mvn spring-boot:run

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

5. 日志记录和 ANSI 控制台

当你使用 run 命令从 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 类型搜索”是STS 3.5.0中引入的一项功能。它在项目中为(尚未)在类路径上的类提供内容辅助建议。STS 可以帮助你将依赖项添加到 POM 文件,以防它们尚未在类路径中。

例如,让我们在Foo实体类中添加一行。为了让这个例子正常工作,请首先确保java.util.List的导入语句已经存在。现在我们可以添加 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 对话框中选择run configurations …,从左侧面板中选择Spring Boot App ,然后选择demo – DemoApplication(如果你没有选择默认项目,这将有所不同)。从(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.baeldung.boot.DemoApplication        : Started DemoApplication in 6.245 seconds (JVM running for 7.34)

9.总结

在本文中,我们展示了在 STS 中开发 Spring 项目的基础知识。我们展示的一些内容包括在 STS 中执行应用程序、在 Spring Data JPA 开发过程中提供支持以及命令行参数的使用。但是,由于 STS 提供了一组丰富的功能,因此在开发过程中可以使用更多有用的功能。

本文的完整实现可以在github 项目中找到——这是一个基于 Eclipse 的项目,因此应该很容易导入和运行。

与往常一样,本教程的完整源代码可在GitHub上获得。

Show Disqus Comments

Post Directory

扫码关注公众号:Taketoday
发送 290992
即可立即永久解锁本站全部文章