2. STS主要特性

STS是基于Eclipse的定制化开发环境,专为Spring应用开发设计。它提供开箱即用的环境用于实现、调试、运行和部署应用,并集成了Pivotal tc Server、Pivotal Cloud Foundry、Git、Maven和AspectJ等工具。STS基于最新Eclipse版本构建,作为其功能扩展。

2.1. 项目配置

STS能识别几乎所有常见的Java项目结构。它会解析配置文件并显示:

  • 定义的bean详细信息
  • 项目依赖关系
  • 使用的命名空间
  • 特定注解的概览信息

spring-bean-snapshot

2.2. STS特性概览

Eclipse STS提供两大核心能力:

  1. 项目验证与快速修复:例如使用Spring Data JPA时,IDE会自动验证查询方法名称(详见第6节)
  2. 可视化关系图:通过菜单Window > Show View > Spring可查看bean方法及其关系的图形化编辑器

STS还包含许多非Spring专用的实用功能,完整特性列表可参考官方文档

3. 创建Spring应用

传统方式需要通过Spring Initializer网站或Spring Boot CLI创建项目,而STS提供更简单的方式:

  1. 在仪表盘点击Create Spring Starter Project
  2. New Spring Starter Project界面使用默认配置或自定义
  3. 下一界面勾选Web依赖后点击完成

生成的pom.xml核心配置如下:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.1.5</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版本可能不同,最新版本可查看Maven仓库

4. 运行应用

启动应用有两种方式:

  • STS方式:右键项目选择Run As > Spring Boot App
  • 命令行方式(无STS时):
    $ mvn spring-boot:run
    

默认情况下,应用会启动在8080端口的Tomcat上。由于尚未实现任何业务逻辑,此时应用仅保持运行状态。修改默认端口的方法见第8节。

5. 日志和ANSI控制台

通过STS运行项目时,控制台会输出彩色编码日志。关闭该功能有两种方式:

  1. IDE配置:在Run Configurations...Spring Boot标签页取消勾选Enable ANSI console output
  2. 属性文件:在application.properties中添加:
    spring.output.ansi.enabled=NEVER
    

更多日志配置参考官方文档

6. JPA查询名称检查

Spring Data 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统一管理,无需显式指定

创建实体类Foo

@Entity
public class Foo implements Serializable {
    @Id
    @GeneratedValue
    private Integer id;
    private String name;

    // Standard getters and setters
}

创建JPA仓库接口:

public interface FooRepository extends JpaRepository<Foo, Integer> {
    public Foo findByNames(String name); // 错误示范
}

此时IDE会立即报错:

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

这是由于方法名误加了's',修正为findByName即可

关键点

  • 容器会自动扫描@Entity注解类
  • 无需手动添加@EnableJpaRepositories注解(自动配置已处理)

7. Jar类型搜索

STS 3.5.0+引入的"Jar类型搜索"功能,能智能推荐并添加缺失的类路径依赖。使用场景示例:

Foo实体类中添加:

private List<String> strings = Lists // 按 ctrl+SPACE 触发代码补全

IDE会提示添加依赖:

  1. 选择com.google.common.collect
  2. 确认添加Guava依赖

STS会自动修改pom.xml

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

STS 3.8.0+版本会弹出确认对话框后才修改pom.xml

8. 添加应用参数

Spring支持多种外部配置方式(命令行参数、属性文件、系统属性等)。以修改Tomcat端口为例:

命令行方式

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

STS方式

  1. 进入Run > Run Configurations...
  2. 选择Spring Boot App > 你的应用(如demo – DemoApplication
  3. Arguments标签页的Program Arguments输入: ```bash

--server.port=7070


运行后控制台将显示:
```bash
.
.
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项目的基础能力:

  • 一键运行Spring Boot应用
  • Spring Data JPA开发时的实时校验
  • 灵活的命令行参数配置

但STS的强大远不止于此,它还提供大量提升开发效率的特性。完整示例代码可参考GitHub项目(基于Eclipse的项目结构,可直接导入运行)。


原始标题:A Guide to Spring in Eclipse STS