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服务器:
- 认证账户:执行
heroku login
,按提示登录并创建SSH密钥 - 创建应用:执行
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=10
:Heroku开发版数据库限制最大连接数为10ddl-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仓库。