2. 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节)
- 可视化关系图:通过菜单
Window > Show View > Spring
可查看bean方法及其关系的图形化编辑器
STS还包含许多非Spring专用的实用功能,完整特性列表可参考官方文档
3. 创建Spring应用
传统方式需要通过Spring Initializer网站或Spring Boot CLI创建项目,而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>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运行项目时,控制台会输出彩色编码日志。关闭该功能有两种方式:
- IDE配置:在
Run Configurations...
的Spring Boot
标签页取消勾选Enable ANSI console output
- 属性文件:在
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会提示添加依赖:
- 选择
com.google.common.collect
- 确认添加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方式:
- 进入
Run > Run Configurations...
- 选择
Spring Boot App
> 你的应用(如demo – DemoApplication
) - 在
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的项目结构,可直接导入运行)。