Spring Cloud Connector和Heroku

2023/05/13

1. 概述

在本文中,我们将介绍如何使用Spring Cloud Connectors在Heroku上设置Spring Boot应用程序。

Heroku是一种为Web服务提供托管的服务。此外,它们还提供大量第三方服务(称为附加组件),提供从系统监控到数据库存储的一切服务。

除此之外,他们还有一个自定义的CI/CD管道,可以无缝集成到Git中,从而加快开发到生产的过程。

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仓库。然后运行git add .和git commit -m “first commit”。

现在我们已经将我们的应用程序保存到我们的本地git仓库中。

4.2 配置Heroku Web应用程序

接下来,让我们使用Heroku CLI在我们的帐户上配置Web服务器。

首先,我们需要验证我们的Heroku帐户。从命令行运行heroku login并按照登录和创建SSH密钥的说明进行操作

接下来,运行heroku create。这将提供Web服务器并添加一个远程仓库,我们可以将我们的代码推送到该仓库以进行部署。我们还会在控制台中看到一个域,复制这个域以便我们稍后访问它。

4.3 将代码推送到Heroku

现在我们将使用git将我们的代码推送到新的Heroku仓库。

运行命令git push heroku master将我们的代码发送到Heroku。

在控制台输出中,我们应该看到表明上传成功的日志,然后他们的系统将下载任何依赖项,构建我们的应用程序,运行测试(如果存在),并在一切顺利的情况下部署应用程序。

就是这样-我们现在将我们的应用程序公开部署到Web服务器。

5. 在Heroku上测试In-Memory

让我们确保我们的应用程序正常运行。使用我们创建步骤中的域,让我们测试我们的实时应用程序。

让我们发出一些HTTP请求:

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

我们应该返回:

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

现在让我们尝试获取我们刚刚创建的对象:

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

这应该返回:

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

这一切看起来不错,但在生产中,我们应该使用永久数据存储。

让我们逐步了解如何配置PostgreSQL数据库并配置我们的Spring应用程序以使用它。

6. 添加PostgreSQL

要添加PostgreSQL数据库,请运行此命令heroku addons:create heroku-postgresql:hobby-dev。

这将为我们的Web服务器提供一个数据库,并添加一个提供连接信息的环境变量。

Spring Cloud Connector配置为检测此变量并自动设置数据源,因为Spring可以检测到我们要使用PostgreSQL

为了让Spring Boot知道我们正在使用PostgreSQL,我们需要进行两处更改。

首先,我们需要添加一个依赖项来包含PostgreSQL驱动程序:

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

接下来,让我们添加属性,以便Spring Data Connectors可以根据其可用资源配置数据库。

在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

这将汇集我们的数据库连接并限制我们应用程序的连接。Heroku将开发层数据库中的活动连接数限制为10,因此我们将最大值设置为10。此外,我们将hibernate.ddl属性设置为create,以便自动创建book表。

最后,提交这些更改并运行git push heroku master。这会将这些更改推送到我们的Heroku应用程序。在我们的应用程序启动后,尝试运行上一节中的测试。

我们需要做的最后一件事是更改ddl设置。让我们也更新该值:

spring.jpa.hibernate.ddl-auto=update

这将指示应用程序在重新启动应用程序时对实体进行更改时更新Schema。像以前一样提交并推送此更改,以将更改推送到我们的Heroku应用程序。

我们不需要为此编写自定义数据源集成。这是因为Spring Cloud Connectors检测到我们正在使用Heroku和PostgreSQL运行-并自动连接Heroku数据源。

7. 总结

我们现在在Heroku中有一个正在运行的Spring Boot应用程序。

最重要的是,从单一想法到运行应用程序的简单性使Heroku成为一种可靠的部署方式。

要了解有关Heroku和所有工具的更多信息,我们可以在heroku.com上阅读更多内容。

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

Show Disqus Comments

Post Directory

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