Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento kurz ukazuje, jak ukládat data do databáze Azure Database for PostgreSQL pomocí Spring Data JDBC.
JDBC je standardní rozhraní API Java 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í PostgreSQL. Na kartě Passwordless se zobrazuje ověřování Microsoft Entra a karta Password zobrazuje ověřování PostgreSQL.
Ověřování Microsoft Entra je mechanismus pro připojení k Azure Database for PostgreSQL pomocí identit definovaných v Microsoft Entra ID. S ověřováním Microsoft Entra můžete spravovat identity uživatelů databáze a další služby Microsoftu v centrálním umístění, což zjednodušuje správu oprávnění.
Ověřování PostgreSQL používá účty uložené v PostgreSQL. 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 PostgreSQL, musíte spravovat rotaci hesel sami.
Požadavky
Předplatné Azure – vytvořte si jedno zdarma.
Java Development Kit (JDK) verze 8 nebo vyšší.
Pokud nemáte aplikaci Spring Boot, vytvořte projekt Maven pomocí aplikace Spring Initializr. Nezapomeňte vybrat Maven Project, a potom v části Dependencies přidejte závislosti Spring Web, Spring Data JDBC a PostgreSQL Driver. Nakonec vyberte verzi Javy 8 nebo vyšší.
- Pokud ji nemáte, vytvořte instanci flexibilního serveru Azure Database for PostgreSQL s názvem
postgresqlflexibletesta databázi s názvemdemo. Pokyny najdete v tématu Quickstart: Vytvoření Azure Database for PostgreSQL – flexibilního serveru na portálu Azure.
Zobrazení ukázkové aplikace
V tomto kurzu naprogramujete ukázkovou aplikaci. Pokud chcete pokračovat rychleji, tato aplikace je už zakódovaná a dostupná na https://github.com/Azure-Samples/quickstart-spring-data-jdbc-postgresql.
Nakonfigurujte pravidlo brány firewall pro server PostgreSQL
Azure Database for PostgreSQL instance jsou ve výchozím nastavení zabezpečené. Mají 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 viz Pravidla firewallu v Azure Database for PostgreSQL – flexibilní server.
Pokud se připojujete k serveru PostgreSQL z Windows Subsystem for Linux (WSL) na počítači s Windows, musíte do firewallu přidat ID hostitele WSL.
Vytvoření uživatele PostgreSQL bez oprávnění správce a udělení oprávnění
Dále vytvořte uživatele bez oprávnění správce a udělte mu všechna oprávnění.
Následující metodu můžete použít k vytvoření uživatele, který není správcem a používá připojení bez hesla.
Pomocí následujícího příkazu nainstalujte rozšíření Service Connector bez hesla pro Azure CLI:
az extension add --name serviceconnector-passwordless --upgradePomocí následujícího příkazu vytvořte Microsoft Entra uživatele bez oprávnění správce:
az connection create postgres-flexible \ --resource-group <your_resource_group_name> \ --connection postgres_conn \ --target-resource-group <your_resource_group_name> \ --server postgresqlflexibletest \ --database demo \ --user-account \ --query authInfo.userName \ --output tsvPo dokončení příkazu si poznamenejte uživatelské jméno ve výstupu konzoly.
Ukládání dat z Azure Database for PostgreSQL
Teď, když máte instanci flexibilního serveru Azure Database for PostgreSQL, můžete data ukládat pomocí Azure Spring Cloud.
Pokud chcete nainstalovat modul Spring Cloud Azure Starter JDBC PostgreSQL, přidejte do souboru pom.xml následující závislosti:
Spring Cloud Azure Bill of Materials (BOM):
<dependencyManagement> <dependencies> <dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-dependencies</artifactId> <version>7.1.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>Poznámka:
Pokud používáte Spring Boot 4.0.x, nezapomeňte nastavit
spring-cloud-azure-dependenciesverzi na7.1.0.Pokud používáte Spring Boot 3.5.x, nezapomeňte nastavit
spring-cloud-azure-dependenciesverzi na6.2.0hodnotu.Pokud používáte Spring Boot 3.1.x-3.5.x, nezapomeňte nastavit verzi na
spring-cloud-azure-dependencies.Pokud používáte Spring Boot 2.x, nezapomeňte nastavit
spring-cloud-azure-dependenciesverzi na4.20.0.Tato faktura materiálu (BOM) by měla být nakonfigurována v
<dependencyManagement>části vašeho pom.xml souboru. Tím zajistíte, že všechny závislosti Spring Cloud Azure budou používat stejnou verzi.Další informace o verzi použité pro tuto BOM najdete v tématu Kterou verzi Spring Cloud Azure bych měl/a použít.
Artefakt Spring Cloud Azure Starter JDBC PostgreSQL:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-jdbc-postgresql</artifactId> </dependency>
Poznámka:
Připojení bez hesla byla od verze 4.5.0podporována .
Konfigurace Spring Bootu pro použití Azure Database for PostgreSQL
Pokud chcete ukládat data z Azure Database for PostgreSQL pomocí Spring Data JDBC, nakonfigurujte aplikaci pomocí následujícího postupu:
Nakonfigurujte přihlašovací údaje Azure Database for PostgreSQL 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:postgresql://postgresqlflexibletest.postgres.database.azure.com:5432/demo?sslmode=require spring.datasource.username=<your_postgresql_ad_non_admin_username> spring.datasource.azure.passwordless-enabled=true spring.sql.init.mode=alwaysVýstraha
Vlastnost
spring.sql.init.mode=alwayskonfigurace znamená, že Spring Boot automaticky vygeneruje schéma databáze pomocí souboru schema.sql , který vytvoříte příště 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í.
- Pokud ji nemáte, vytvořte instanci jednoúčelového serveru Azure Database for PostgreSQL s názvem
postgresqlsingletesta databázi s názvemdemo. Pokyny najdete v tématu Quickstart: Vytvoření serveru Azure Database for PostgreSQL pomocí portálu Azure.
Zobrazení ukázkové aplikace
V tomto článku naprogramujete ukázkovou aplikaci. Pokud chcete pokračovat rychleji, tato aplikace je už zakódovaná a dostupná na https://github.com/Azure-Samples/quickstart-spring-data-jdbc-postgresql.
Nakonfigurujte pravidlo brány firewall pro server PostgreSQL
Azure Database for PostgreSQL instance jsou ve výchozím nastavení zabezpečené. Mají 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 pro Azure Database for PostgreSQL – jeden server pomocí portálu Azure.
Pokud se připojujete k serveru PostgreSQL z Windows Subsystem for Linux (WSL) na počítači s Windows, musíte do firewallu přidat ID hostitele WSL.
Vytvoření uživatele PostgreSQL bez oprávnění správce a udělení oprávnění
Dále vytvořte uživatele bez oprávnění správce a udělte mu všechna oprávnění.
Následující metodu můžete použít k vytvoření uživatele, který není správcem a používá připojení bez hesla.
Pomocí následujícího příkazu nainstalujte rozšíření Service Connector bez hesla pro Azure CLI:
az extension add --name serviceconnector-passwordless --upgradePomocí následujícího příkazu vytvořte Microsoft Entra uživatele bez oprávnění správce:
az connection create postgres \ --resource-group <your_resource_group_name> \ --connection postgres_conn \ --target-resource-group <your_resource_group_name> \ --server postgresqlsingletest \ --database demo \ --user-account \ --query authInfo.userName \ --output tsvPo dokončení příkazu si poznamenejte uživatelské jméno ve výstupu konzoly.
Ukládání dat z Azure Database for PostgreSQL
Teď, když máte instanci jednoúčelového serveru Azure Database for PostgreSQL, můžete data ukládat pomocí Azure Spring Cloud.
Pokud chcete nainstalovat modul Spring Cloud Azure Starter JDBC PostgreSQL, přidejte do souboru pom.xml následující závislosti:
Spring Cloud Azure Bill of Materials (BOM):
<dependencyManagement> <dependencies> <dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-dependencies</artifactId> <version>7.1.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>Poznámka:
Pokud používáte Spring Boot 4.0.x, nezapomeňte nastavit
spring-cloud-azure-dependenciesverzi na7.1.0.Pokud používáte Spring Boot 3.5.x, nezapomeňte nastavit
spring-cloud-azure-dependenciesverzi na6.2.0hodnotu.Pokud používáte Spring Boot 3.1.x-3.5.x, nezapomeňte nastavit verzi na
spring-cloud-azure-dependencies.Pokud používáte Spring Boot 2.x, nezapomeňte nastavit
spring-cloud-azure-dependenciesverzi na4.20.0.Tato faktura materiálu (BOM) by měla být nakonfigurována v
<dependencyManagement>části vašeho pom.xml souboru. Tím zajistíte, že všechny závislosti Spring Cloud Azure budou používat stejnou verzi.Další informace o verzi použité pro tuto BOM najdete v tématu Kterou verzi Spring Cloud Azure bych měl/a použít.
Artefakt Spring Cloud Azure Starter JDBC PostgreSQL:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-jdbc-postgresql</artifactId> </dependency>
Poznámka:
Připojení bez hesla byla od verze 4.5.0podporována .
Konfigurace Spring Bootu pro použití Azure Database for PostgreSQL
Pokud chcete ukládat data z Azure Database for PostgreSQL pomocí Spring Data JDBC, nakonfigurujte aplikaci pomocí následujícího postupu:
Nakonfigurujte přihlašovací údaje Azure Database for PostgreSQL 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:postgresql://postgresqlsingletest.postgres.database.azure.com:5432/demo?sslmode=require spring.datasource.username=<your_postgresql_ad_non_admin_username>@postgresqlsingletest spring.datasource.azure.passwordless-enabled=true spring.sql.init.mode=alwaysVýstraha
Vlastnost
spring.sql.init.mode=alwayskonfigurace znamená, že Spring Boot automaticky vygeneruje schéma databáze pomocí souboru schema.sql , který vytvoříte příště 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í.
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 třídu
TodoJava. Tato třída je doménový model mapovaný natodotabulku, která se vytvoří automaticky službou Spring Boot. Následující kód ignorujegettersmetody asettersmetody.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> { }Návod
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 Azure Identity. Spring Cloud Azure používá
DefaultAzureCredential, které knihovna identit Azure poskytuje, aby vám pomohla získat přihlašovací údaje bez jakýchkoli změn kódu.DefaultAzureCredentialpodporuje 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 autentizace Azure ve vývojových prostředích pro Java. K dokončení ověřování v Azure hostitelských prostředích 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
Nasazení do Azure Spring Apps
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 aplikaci nasadit do Azure Spring Apps, viz Nasazení vaší první aplikace na Azure Spring Apps.