1. 概述

本文将介绍如何使用Spring Cloud Connectors在Heroku上部署Spring Boot应用。

Heroku是一个提供Web服务托管的平台。它还提供大量第三方服务(称为add-ons),涵盖从系统监控到数据库存储的各种功能。

此外,Heroku拥有与Git无缝集成的自定义CI/CD流水线,能快速将代码部署到生产环境。

Spring通过Spring Cloud Connectors库支持Heroku。我们将利用该库自动配置PostgreSQL数据源。

下面开始编写应用。

2. 创建Spring Boot图书服务

首先,创建一个简单的Spring Boot服务。这部分基础操作直接跳过,相信大家都很熟悉。

3. 注册Heroku账户

现在需要注册Heroku账户。访问heroku.com,点击页面右上角的注册按钮。

注册完成后,安装CLI工具。前往heroku-cli安装页面安装软件。这是完成本教程的必备工具。

4. 创建Heroku应用

安装好Heroku CLI后,回到我们的应用项目。

4.1 初始化Git仓库

Heroku与Git配合使用效果最佳

在应用根目录(即pom.xml所在目录)执行:

git init
git add .
git commit -m "first commit"

✅ 现在代码已保存到本地Git仓库。

4.2 部署Heroku Web应用

使用Heroku CLI在账户中创建Web服务器:

  1. 认证账户:执行heroku login,按提示登录并创建SSH密钥
  2. 创建应用:执行heroku create
    • 这会自动配置Web服务器并添加远程仓库
    • 控制台会输出域名,复制备用

4.3 推送代码到Heroku

使用Git推送代码:

git push heroku master

控制台会显示:

  • 上传成功日志
  • 依赖下载过程
  • 应用构建过程
  • 测试执行(若有)
  • 最终部署结果

⚠️ 部署完成后,应用已公开运行在Web服务器上。

5. 测试内存数据库

验证应用是否正常工作。使用之前复制的域名测试:

创建图书

POST https://{heroku-domain}/books
{"author":"baeldung","title":"Spring Boot on Heroku"}

返回:

{
    "title": "Spring Boot on Heroku",
    "author": "baeldung"
}

查询图书

GET https://{heroku-domain}/books/1

返回:

{
    "id": 1,
    "title": "Spring Boot on Heroku",
    "author": "baeldung"
}

虽然功能正常,但生产环境应该使用持久化存储。下面配置PostgreSQL数据库。

6. 添加PostgreSQL支持

执行命令添加PostgreSQL:

heroku addons:create heroku-postgresql:hobby-dev

这会:

  • 为Web服务器配置数据库
  • 添加包含连接信息的环境变量

Spring Cloud Connector会自动检测该变量并配置数据源,前提是Spring能识别我们要用PostgreSQL。

需要做两处修改:

1. 添加PostgreSQL驱动依赖

<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>42.2.10</version>
</dependency>

2. 配置数据库连接池: 在src/main/resources/application.properties添加:

spring.datasource.driverClassName=org.postgresql.Driver
spring.datasource.maxActive=10
spring.datasource.maxIdle=5
spring.datasource.minIdle=2
spring.datasource.initialSize=5
spring.datasource.removeAbandoned=true
spring.jpa.hibernate.ddl-auto=create

关键配置说明:

  • maxActive=10Heroku开发版数据库限制最大连接数为10
  • ddl-auto=create:自动创建图书表

提交更改并推送:

git add .
git commit -m "Add PostgreSQL support"
git push heroku master

🚀 部署完成后,重复第5节的测试验证。

最后修改DDL配置

spring.jpa.hibernate.ddl-auto=update

这样应用重启时会根据实体类更新数据库结构。再次提交推送:

git commit -am "Change DDL mode to update"
git push heroku master

全程无需编写数据源集成代码,Spring Cloud Connectors自动完成了所有配置!

7. 总结

现在我们成功在Heroku上运行了Spring Boot应用。

最值得称道的是,从想法到上线部署的整个过程极其简洁,这使Heroku成为部署应用的可靠选择。

想了解更多Heroku功能,可访问heroku.com

完整代码示例请查看GitHub仓库


原始标题:Connecting to an External System with Spring Cloud Connectors

« 上一篇: 创建Java编译器插件
» 下一篇: Spring REST Shell 介绍