Události
Vytváření inteligentních aplikací
17. 3. 21 - 21. 3. 10
Připojte se k řadě meetupů a vytvořte škálovatelná řešení AI založená na skutečných případech použití s kolegy vývojáři a odborníky.
ZaregistrovatTento prohlížeč se už nepodporuje.
Upgradujte na Microsoft Edge, abyste mohli využívat nejnovější funkce, aktualizace zabezpečení a technickou podporu.
Tento kurz ukazuje, jak ukládat data do databáze Azure Database for MySQL pomocí Spring Data JDBC.
JDBC je standardní rozhraní Java API pro připojení k tradičním relačním databázím.
V tomto kurzu zahrneme dvě metody ověřování: ověřování Microsoft Entra a ověřování MySQL. Karta Bez hesla zobrazuje ověřování Microsoft Entra a karta Heslo zobrazuje ověřování MySQL.
Ověřování Microsoft Entra je mechanismus pro připojení ke službě Azure Database for MySQL pomocí identit definovaných v MICROSOFT Entra ID. Pomocí ověřování Microsoft Entra můžete spravovat identity uživatelů databáze a další služby Microsoft v centrálním umístění, což zjednodušuje správu oprávnění.
Ověřování MySQL používá účty uložené v MySQL. Pokud se rozhodnete používat hesla jako přihlašovací údaje pro účty, budou tyto přihlašovací údaje uloženy v user
tabulce. Vzhledem k tomu, že tato hesla jsou uložená v MySQL, musíte spravovat rotaci hesel sami.
Předplatné Azure – vytvořte si ho zdarma.
Java Development Kit (JDK) verze 8 nebo vyšší.
Klient příkazového řádku MySQL.
Pokud nemáte aplikaci Spring Boot, vytvořte projekt Maven pomocí aplikace Spring Initializr. Nezapomeňte vybrat projekt Maven a v části Závislosti přidejte závislosti Spring Web, Spring Data JDBC a Ovladače MySQL a pak vyberte Javu verze 8 nebo vyšší.
mysqlflexibletest
. Pokyny najdete v tématu Rychlý start: Vytvoření flexibilního serveru Azure Database for MySQL pomocí webu Azure Portal. Pak vytvořte databázi s názvem demo
. Pokyny najdete v tématu Vytváření a správa databází pro flexibilní server Azure Database for MySQL.V tomto kurzu naprogramujete ukázkovou aplikaci. Pokud chcete přejít rychleji, tato aplikace je již kódována a k dispozici na adrese https://github.com/Azure-Samples/quickstart-spring-data-jdbc-mysql.
Instance Azure Database for MySQL jsou ve výchozím nastavení zabezpečené. Obsahuje bránu firewall, která nepovoluje žádné příchozí připojení.
Pokud chcete mít možnost používat databázi, otevřete bránu firewall serveru, aby místní IP adresa mohla přistupovat k databázovému serveru. Další informace najdete v tématu Správa pravidel brány firewall pro flexibilní server Azure Database for MySQL pomocí webu Azure Portal.
Pokud se připojujete k serveru MySQL z Subsystém Windows pro Linux (WSL) na počítači s Windows, musíte do brány firewall přidat IP adresu hostitele WSL.
Tento krok vytvoří uživatele, který není správcem, a udělí mu všechna oprávnění k demo
databázi.
Následující metodu můžete použít k vytvoření uživatele bez hesla, který používá připojení bez hesla.
Pomocí následujícího příkazu nainstalujte rozšíření bez hesla konektoru služby pro Azure CLI:
az extension add --name serviceconnector-passwordless --upgrade
Pomocí následujícího příkazu vytvořte uživatele Microsoft Entra bez oprávnění správce:
az connection create mysql-flexible \
--resource-group <your_resource_group_name> \
--connection mysql_conn \
--target-resource-group <your_resource_group_name> \
--server mysqlflexibletest \
--database demo \
--user-account mysql-identity-id=/subscriptions/<your_subscription_id>/resourcegroups/<your_resource_group_name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<your_user_assigned_managed_identity_name> \
--query authInfo.userName \
--output tsv
Po dokončení příkazu si poznamenejte uživatelské jméno ve výstupu konzoly.
Teď, když máte instanci flexibilního serveru Azure Database for MySQL, můžete data ukládat pomocí Spring Cloud Azure.
Pokud chcete nainstalovat modul Spring Cloud Azure Starter JDBC MySQL, přidejte do souboru pom.xml následující závislosti:
Kusovník materiálů (BOM) Spring Cloud v Azure:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-dependencies</artifactId>
<version>5.20.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
Poznámka
Pokud používáte Spring Boot 2.x, nezapomeňte nastavit spring-cloud-azure-dependencies
verzi na 4.19.0
.
Tato faktura materiálu (BOM) by měla být nakonfigurována v <dependencyManagement>
části vašeho pom.xml souboru. Tím se zajistí, že všechny závislosti Azure Spring Cloudu budou používat stejnou verzi.
Další informace o verzi použité pro tuto kusovníku najdete v tématu Jakou verzi Spring Cloud Azure mám použít.
Artefakt Spring Cloud Azure Starter JDBC MySQL:
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter-jdbc-mysql</artifactId>
</dependency>
Poznámka
Připojení bez hesla byla od verze 4.5.0
podporována .
Pokud chcete ukládat data ze služby Azure Database for MySQL pomocí Spring Data JDBC, nakonfigurujte aplikaci pomocí následujícího postupu:
Nakonfigurujte přihlašovací údaje azure Database for MySQL přidáním následujících vlastností do konfiguračního souboru application.properties .
logging.level.org.springframework.jdbc.core=DEBUG
spring.datasource.url=jdbc:mysql://mysqlflexibletest.mysql.database.azure.com:3306/demo?serverTimezone=UTC
spring.datasource.username=<your_mysql_ad_non_admin_username>
spring.datasource.azure.passwordless-enabled=true
spring.sql.init.mode=always
Upozornění
Vlastnost spring.sql.init.mode=always
konfigurace znamená, že Spring Boot automaticky vygeneruje schéma databáze pomocí souboru schema.sql , který vytvoříte při každém spuštění serveru. Tato funkce je skvělá pro testování, ale nezapomeňte, že při každém restartování odstraní vaše data, takže byste je neměli používat v produkčním prostředí.
Vlastnost spring.datasource.url
konfigurace byla připojena ?serverTimezone=UTC
, aby ovladač JDBC při připojování k databázi použil formát data UTC (nebo koordinovaný univerzální čas). Bez tohoto parametru by váš server Java nepoužil stejný formát data jako databáze, což by vedlo k chybě.
mysqlsingletest
. Pokyny najdete v tématu Rychlý start: Vytvoření serveru Azure Database for MySQL pomocí webu Azure Portal. Pak vytvořte databázi s názvem demo
. Pokyny najdete v části Vytvoření databáze v části Vytvoření uživatelů ve službě Azure Database for MySQL.V tomto článku naprogramujete ukázkovou aplikaci. Pokud chcete přejít rychleji, tato aplikace je již kódována a k dispozici na adrese https://github.com/Azure-Samples/quickstart-spring-data-jdbc-mysql.
Instance Azure Database for MySQL jsou ve výchozím nastavení zabezpečené. Obsahuje bránu firewall, která nepovoluje žádné příchozí připojení.
Pokud chcete mít možnost používat databázi, otevřete bránu firewall serveru, aby místní IP adresa mohla přistupovat k databázovému serveru. Další informace najdete v tématu Vytvoření a správa pravidel brány firewall služby Azure Database for MySQL pomocí webu Azure Portal.
Pokud se připojujete k serveru MySQL z Subsystém Windows pro Linux (WSL) na počítači s Windows, musíte do brány firewall přidat IP adresu hostitele WSL.
Tento krok vytvoří uživatele, který není správcem, a udělí mu všechna oprávnění k demo
databázi.
Důležité
Pokud chcete používat připojení bez hesla, vytvořte uživatele správce Microsoft Entra pro vaši instanci Azure Database for MySQL. Další informace najdete v části Nastavení uživatelského oddílu Microsoft Entra Admin v části Použití ID Microsoft Entra pro ověřování pomocí MySQL.
Vytvořte skript SQL s názvem create_ad_user.sql pro vytvoření uživatele bez oprávnění správce. Přidejte následující obsah a uložte ho místně:
export AZ_MYSQL_AD_NON_ADMIN_USERID=$(az ad signed-in-user show --query id --output tsv)
cat << EOF > create_ad_user.sql
SET aad_auth_validate_oids_in_tenant = OFF;
CREATE AADUSER '<your_mysql_ad_non_admin_username>' IDENTIFIED BY '$AZ_MYSQL_AD_NON_ADMIN_USERID';
GRANT ALL PRIVILEGES ON demo.* TO '<your_mysql_ad_non_admin_username>'@'%';
FLUSH privileges;
EOF
Potom pomocí následujícího příkazu spusťte skript SQL a vytvořte uživatele Microsoft Entra bez oprávnění správce:
mysql -h mysqlsingletest.mysql.database.azure.com --user <your_mysql_ad_admin_username>@mysqlsingletest --enable-cleartext-plugin --password=$(az account get-access-token --resource-type oss-rdbms --output tsv --query accessToken) < create_ad_user.sql
Tip
Pokud chcete pro připojení ke službě Azure Database for MySQL použít ověřování Microsoft Entra, musíte se přihlásit pomocí uživatele správce Microsoft Entra, který jste nastavili, a pak získat přístupový token jako heslo. Další informace naleznete v tématu Použití Microsoft Entra ID pro ověřování pomocí MySQL.
Teď, když máte instanci jednoúčelového serveru Azure Database for MySQL, můžete data ukládat pomocí Spring Cloud Azure.
Pokud chcete nainstalovat modul Spring Cloud Azure Starter JDBC MySQL, přidejte do souboru pom.xml následující závislosti:
Kusovník materiálů (BOM) Spring Cloud v Azure:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-dependencies</artifactId>
<version>5.20.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
Poznámka
Pokud používáte Spring Boot 2.x, nezapomeňte nastavit spring-cloud-azure-dependencies
verzi na 4.19.0
.
Tato faktura materiálu (BOM) by měla být nakonfigurována v <dependencyManagement>
části vašeho pom.xml souboru. Tím se zajistí, že všechny závislosti Azure Spring Cloudu budou používat stejnou verzi.
Další informace o verzi použité pro tuto kusovníku najdete v tématu Jakou verzi Spring Cloud Azure mám použít.
Artefakt Spring Cloud Azure Starter JDBC MySQL:
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter-jdbc-mysql</artifactId>
</dependency>
Poznámka
Připojení bez hesla byla od verze 4.5.0
podporována .
Pokud chcete ukládat data ze služby Azure Database for MySQL pomocí Spring Data JDBC, nakonfigurujte aplikaci pomocí následujícího postupu:
Nakonfigurujte přihlašovací údaje azure Database for MySQL přidáním následujících vlastností do konfiguračního souboru application.properties .
logging.level.org.springframework.jdbc.core=DEBUG
spring.datasource.url=jdbc:mysql://mysqlsingletest.mysql.database.azure.com:3306/demo?serverTimezone=UTC
spring.datasource.username=<your_mysql_ad_non_admin_username>@mysqlsingletest
spring.datasource.azure.passwordless-enabled=true
spring.sql.init.mode=always
Upozornění
Vlastnost spring.sql.init.mode=always
konfigurace znamená, že Spring Boot automaticky vygeneruje schéma databáze pomocí souboru schema.sql , který vytvoříte při každém spuštění serveru. Tato funkce je skvělá pro testování, ale nezapomeňte, že při každém restartování odstraní vaše data, takže byste je neměli používat v produkčním prostředí.
Vlastnost spring.datasource.url
konfigurace byla připojena ?serverTimezone=UTC
, aby ovladač JDBC při připojování k databázi použil formát data UTC (nebo koordinovaný univerzální čas). Bez tohoto parametru by váš server Java nepoužil stejný formát data jako databáze, což by vedlo k chybě.
Vytvořte konfigurační soubor src/main/resources/schema.sql pro konfiguraci schématu databáze a přidejte následující obsah.
DROP TABLE IF EXISTS todo;
CREATE TABLE todo (id SERIAL PRIMARY KEY, description VARCHAR(255), details VARCHAR(4096), done BOOLEAN);
Vytvořte novou Todo
třídu Java. Tato třída je doménový model mapovaný na todo
tabulku, která se vytvoří automaticky službou Spring Boot. Následující kód ignoruje getters
metody a setters
metody.
import org.springframework.data.annotation.Id;
public class Todo {
public Todo() {
}
public Todo(String description, String details, boolean done) {
this.description = description;
this.details = details;
this.done = done;
}
@Id
private Long id;
private String description;
private String details;
private boolean done;
}
Upravte soubor spouštěcí třídy, aby se zobrazil následující obsah.
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.event.ApplicationReadyEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.context.annotation.Bean;
import org.springframework.data.repository.CrudRepository;
import java.util.stream.Stream;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@Bean
ApplicationListener<ApplicationReadyEvent> basicsApplicationListener(TodoRepository repository) {
return event->repository
.saveAll(Stream.of("A", "B", "C").map(name->new Todo("configuration", "congratulations, you have set up correctly!", true)).toList())
.forEach(System.out::println);
}
}
interface TodoRepository extends CrudRepository<Todo, Long> {
}
Tip
V tomto kurzu nejsou v konfiguracích ani kódu žádné ověřovací operace. Připojení ke službám Azure ale vyžaduje ověření. K dokončení ověřování je potřeba použít identitu Azure. Spring Cloud Azure používá DefaultAzureCredential
, kterou poskytuje knihovna identit Azure, která vám pomůže získat přihlašovací údaje bez jakýchkoli změn kódu.
DefaultAzureCredential
podporuje více metod ověřování a určuje, kterou metodu použít za běhu. Tento přístup umožňuje vaší aplikaci používat různé metody ověřování v různých prostředích (například v místních a produkčních prostředích) bez implementace kódu specifického pro prostředí. Další informace naleznete v tématu DefaultAzureCredential.
K dokončení ověřování v místních vývojových prostředích můžete použít Azure CLI, Visual Studio Code, PowerShell nebo jiné metody. Další informace najdete v tématu Ověřování Azure ve vývojových prostředích Java. K dokončení ověřování v hostitelských prostředích Azure doporučujeme použít spravovanou identitu přiřazenou uživatelem. Další informace najdete v tématu Co jsou spravované identity pro prostředky Azure?
Spusťte aplikaci. Aplikace ukládá data do databáze. Zobrazí se protokoly podobné následujícímu příkladu:
2023-02-01 10:22:36.701 DEBUG 7948 --- [main] o.s.jdbc.core.JdbcTemplate : Executing prepared SQL statement [INSERT INTO todo (description, details, done) VALUES (?, ?, ?)]
com.example.demo.Todo@4bdb04c8
Teď, když máte aplikaci Spring Boot spuštěnou místně, je čas ji přesunout do produkčního prostředí. Azure Spring Apps usnadňuje nasazování aplikací Spring Boot do Azure bez jakýchkoli změn kódu. Služba spravuje infrastrukturu aplikací Spring, aby se vývojáři mohli soustředit na svůj kód. Azure Spring Apps poskytuje správu životního cyklu pomocí komplexního monitorování a diagnostiky, správy konfigurace, zjišťování služeb, integrace CI/CD, modrých zelených nasazení a dalších. Pokud chcete nasadit aplikaci do Azure Spring Apps, přečtěte si téma Nasazení první aplikace do Azure Spring Apps.
Události
Vytváření inteligentních aplikací
17. 3. 21 - 21. 3. 10
Připojte se k řadě meetupů a vytvořte škálovatelná řešení AI založená na skutečných případech použití s kolegy vývojáři a odborníky.
ZaregistrovatŠkolení
Modul
Nasazení aplikace Spring Boot do služby Aplikace Azure Service - Training
Vytvořte aplikaci Spring Boot, připojte ji k databázi MySQL a pak ji nasaďte do služby Azure App Service.
Certifikace
Microsoft Certified: Přidružení správce služby Azure Database - Certifications
Správa infrastruktury databáze SQL Serveru pro cloudové, místní a hybridní relační databáze pomocí nabídek relačních databází Microsoft PaaS.
Dokumentace
Použití spring data JPA se službou Azure Database for MySQL - Java on Azure
Naučte se používat Spring Data JPA s databází Azure Database for MySQL.
Použití Spring Data JDBC se službou Azure SQL Database - Java on Azure
Zjistěte, jak používat Spring Data JDBC s databází Azure SQL Database.
Migrace aplikace v Javě pro použití bez hesel s Azure SQL Database - Java on Azure
Zjistěte, jak migrovat aplikaci v Javě, aby používala připojení bez hesla se službou Azure SQL Database.