注意
基本计划和标准计划于 2025 年 3 月 17 日进入退休期。 有关详细信息,请参阅 Azure Spring Apps 停用公告。
可以通过 Azure Spring Apps 将所选 Azure 服务自动连接到应用程序,而不必手动配置 Spring Boot 应用程序。 本文介绍如何将应用程序连接到 Azure Database for MySQL 实例。
先决条件
- 一个已部署到 Azure Spring Apps 的应用程序。 有关详细信息,请参阅快速入门:将第一个应用程序部署到 Azure Spring Apps。
- Azure Database for MySQL 灵活服务器实例。
- Azure CLI 2.45.0 或更高版本。
准备项目
在项目的 pom.xml 文件中,添加以下依赖项:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-jdbc-mysql</artifactId> </dependency>在 application.properties 文件中,删除所有 属性。
通过运行
az spring app deploy更新当前应用,或者通过运行az spring app deployment create针对此更改创建新的部署。
将应用连接到 Azure Database for MySQL 实例
以下 Terraform 脚本演示如何使用 Azure Database for MySQL 设置 Azure Spring Apps 应用。
provider "azurerm" {
features {}
}
variable "application_name" {
type = string
description = "The name of your application"
default = "demo-abc"
}
variable "administrator_login" {
type = string
description = "The MySQL administrator login"
default = "myadmin"
}
resource "azurerm_resource_group" "example" {
name = "example-resources"
location = "China North 2"
}
resource "random_password" "password" {
length = 32
special = true
override_special = "_%@"
}
resource "azurerm_mysql_server" "database" {
name = "mysql-${var.application_name}-001"
resource_group_name = azurerm_resource_group.example.name
location = azurerm_resource_group.example.location
administrator_login = var.administrator_login
administrator_login_password = random_password.password.result
sku_name = "B_Gen5_1"
storage_mb = 5120
version = "5.7"
auto_grow_enabled = true
backup_retention_days = 7
geo_redundant_backup_enabled = false
infrastructure_encryption_enabled = false
public_network_access_enabled = true
ssl_enforcement_enabled = true
ssl_minimal_tls_version_enforced = "TLS1_2"
}
resource "azurerm_mysql_database" "database" {
name = "mysqldb-${var.application_name}-001"
resource_group_name = azurerm_resource_group.example.name
server_name = azurerm_mysql_server.database.name
charset = "utf8"
collation = "utf8_unicode_ci"
}
# This rule is to enable the 'Allow access to Azure services' checkbox
resource "azurerm_mysql_firewall_rule" "database" {
name = "mysqlfw-${var.application_name}-001"
resource_group_name = azurerm_resource_group.example.name
server_name = azurerm_mysql_server.database.name
start_ip_address = "0.0.0.0"
end_ip_address = "0.0.0.0"
}
resource "azurerm_spring_cloud_service" "example" {
name = "example-springcloud"
resource_group_name = azurerm_resource_group.example.name
location = azurerm_resource_group.example.location
}
resource "azurerm_spring_cloud_app" "example" {
name = "example-springcloudapp"
resource_group_name = azurerm_resource_group.example.name
service_name = azurerm_spring_cloud_service.example.name
is_public = true
https_only = true
}
resource "azurerm_spring_cloud_java_deployment" "example" {
name = "default"
spring_cloud_app_id = azurerm_spring_cloud_app.example.id
quota {
cpu = "2"
memory = "4Gi"
}
instance_count = 2
jvm_options = "-XX:+PrintGC"
runtime_version = "Java_11"
environment_variables = {
"spring.datasource.url" : "jdbc:mysql://${azurerm_mysql_server.database.fqdn}:3306/${azurerm_mysql_database.database.name}?useSSL=true&requireSSL=false&useLegacyDatetimeCode=false&serverTimezone=UTC"
"spring.datasource.username" : "${var.administrator_login}@${azurerm_mysql_server.database.name}"
"spring.datasource.password" : random_password.password.result
"spring.jpa.properties.hibernate.dialect" : "org.hibernate.dialect.MySQL5InnoDBDialect"
}
}
resource "azurerm_spring_cloud_active_deployment" "example" {
spring_cloud_app_id = azurerm_spring_cloud_app.example.id
deployment_name = azurerm_spring_cloud_java_deployment.example.name
}
后续步骤
本文介绍了如何将 Azure Spring Apps 中的应用程序连接到 Azure Database for MySQL 实例。 若要详细了解如何将服务连接到应用程序,请参阅将 Azure Cosmos DB 数据库连接到 Azure Spring Apps 中的应用程序。