A Spring Data JDBC használata az Azure Database for PostgreSQL-lel
Ez az oktatóanyag bemutatja, hogyan tárolhat adatokat egy Azure Database for PostgreSQL-adatbázisban a Spring Data JDBC használatával.
A JDBC a hagyományos relációs adatbázisokhoz való csatlakozás szabványos Java API-ja.
Ebben az oktatóanyagban két hitelesítési módszert használunk: a Microsoft Entra-hitelesítést és a PostgreSQL-hitelesítést. A Jelszó nélküli lapon a Microsoft Entra-hitelesítés, a Jelszó lapon pedig a PostgreSQL-hitelesítés látható.
A Microsoft Entra-hitelesítés az Azure Database for PostgreSQL-hez való csatlakozás mechanizmusa a Microsoft Entra ID-ban meghatározott identitások használatával. A Microsoft Entra-hitelesítéssel központi helyen kezelheti az adatbázis felhasználói identitásait és más Microsoft-szolgáltatások, ami leegyszerűsíti az engedélykezelést.
A PostgreSQL-hitelesítés a PostgreSQL-ben tárolt fiókokat használja. Ha jelszavakat használ a fiókok hitelesítő adataiként, ezeket a hitelesítő adatokat a rendszer a user
táblában tárolja. Mivel ezek a jelszavak a PostgreSQL-ben vannak tárolva, saját maga kell kezelnie a jelszavak rotálását.
Előfeltételek
Azure-előfizetés – hozzon létre egyet ingyenesen.
Java Development Kit (JDK), 8-es vagy újabb verzió.
Ha nem rendelkezik Spring Boot-alkalmazással, hozzon létre egy Maven-projektet a Spring Initializrrel. Mindenképpen válassza ki a Maven Projectet, és a Függőségek területen adja hozzá a Spring Web, a Spring Data JDBC és a PostgreSQL-illesztőprogram függőségeit, majd válassza a Java 8-es vagy újabb verzióját.
- Ha nincs ilyenje, hozzon létre egy rugalmas Azure Database for PostgreSQL-kiszolgálópéldányt és
postgresqlflexibletest
egy adatbázist.demo
Útmutatásért lásd : Rövid útmutató: Rugalmas Azure Database for PostgreSQL-kiszolgáló létrehozása az Azure Portalon.
A mintaalkalmazás megtekintése
Ebben az oktatóanyagban egy mintaalkalmazást fog kódni. Ha gyorsabban szeretne haladni, ez az alkalmazás már kódolt és elérhető a következő címen https://github.com/Azure-Samples/quickstart-spring-data-jdbc-postgresql: .
Tűzfalszabály konfigurálása a PostgreSQL-kiszolgálóhoz
Az Azure Database for PostgreSQL-példányok alapértelmezés szerint védettek. Tűzfallal rendelkezik, amely semmilyen bejövő kapcsolatot sem engedélyez.
Az adatbázis használatához nyissa meg a kiszolgáló tűzfalát, hogy a helyi IP-cím hozzáférhessen az adatbázis-kiszolgálóhoz. További információ: Tűzfalszabályok a rugalmas Azure Database for PostgreSQL-kiszolgálón.
Ha windowsos számítógépen Linuxos Windows-alrendszer (WSL) keresztül csatlakozik a PostgreSQL-kiszolgálóhoz, hozzá kell adnia a WSL-gazdagép azonosítóját a tűzfalhoz.
Nem rendszergazdai PostgreSQL-felhasználó létrehozása és engedély megadása
Ezután hozzon létre egy nem rendszergazdai felhasználót, és adjon meg minden engedélyt az adatbázisnak.
Az alábbi módszerrel jelszó nélküli kapcsolatot használó, nem rendszergazdai felhasználót hozhat létre.
A következő paranccsal telepítse a Service Csatlakozás or jelszó nélküli bővítményt az Azure CLI-hez:
az extension add --name serviceconnector-passwordless --upgrade
A Microsoft Entra nem rendszergazdai felhasználójának létrehozásához használja az alábbi parancsot:
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 tsv
Amikor a parancs befejeződik, jegyezze fel a felhasználónevet a konzol kimenetében.
Adatok tárolása az Azure Database for PostgreSQL-ből
Most, hogy rendelkezik rugalmas Azure Database for PostgreSQL-kiszolgálópéldánysal, az adatokat a Spring Cloud Azure használatával tárolhatja.
A Spring Cloud Azure Starter JDBC PostgreSQL modul telepítéséhez adja hozzá a következő függőségeket a pom.xml fájlhoz:
A Spring Cloud Azure Anyagjegyzéke (BOM):
<dependencyManagement> <dependencies> <dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-dependencies</artifactId> <version>5.12.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
Feljegyzés
Ha Spring Boot 2.x-et használ, mindenképpen állítsa be a verziót
4.18.0
.spring-cloud-azure-dependencies
Ezt az anyagjegyzéket (BOM) a<dependencyManagement>
pom.xml fájl szakaszában kell konfigurálni. Ez biztosítja, hogy minden Spring Cloud Azure-függőség ugyanazt a verziót használja. A BOM-hez használt verzióról további információt a Spring Cloud Azure melyik verzióját érdemes használni.A Spring Cloud Azure Starter JDBC PostgreSQL-összetevő:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-jdbc-postgresql</artifactId> </dependency>
Feljegyzés
A jelszó nélküli kapcsolatok a verzió 4.5.0
óta támogatottak.
A Spring Boot konfigurálása az Azure Database for PostgreSQL használatára
Az Azure Database for PostgreSQL-ből a Spring Data JDBC használatával történő adattároláshoz kövesse az alábbi lépéseket az alkalmazás konfigurálásához:
Az Azure Database for PostgreSQL hitelesítő adatainak konfigurálásához adja hozzá az alábbi tulajdonságokat az application.properties konfigurációs fájlhoz.
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=always
Figyelmeztetés
A konfigurációs tulajdonság
spring.sql.init.mode=always
azt jelenti, hogy a Spring Boot automatikusan létrehoz egy adatbázissémát a következőként létrehozott schema.sql fájl használatával, a kiszolgáló minden indításakor. Ez a funkció kiválóan alkalmas tesztelésre, de ne feledje, hogy minden újraindításkor törli az adatokat, ezért éles környezetben ne használja.
- Ha nincs ilyenje, hozzon létre egy Önálló Azure Database for PostgreSQL-példányt
postgresqlsingletest
és egy adatbázist.demo
Útmutatásért tekintse meg a rövid útmutatót: Azure Database for PostgreSQL-kiszolgáló létrehozása az Azure Portal használatával.
A mintaalkalmazás megtekintése
Ebben a cikkben egy mintaalkalmazást fog kódni. Ha gyorsabban szeretne haladni, ez az alkalmazás már kódolt és elérhető a következő címen https://github.com/Azure-Samples/quickstart-spring-data-jdbc-postgresql: .
Tűzfalszabály konfigurálása a PostgreSQL-kiszolgálóhoz
Az Azure Database for PostgreSQL-példányok alapértelmezés szerint védettek. Tűzfallal rendelkezik, amely semmilyen bejövő kapcsolatot sem engedélyez.
Az adatbázis használatához nyissa meg a kiszolgáló tűzfalát, hogy a helyi IP-cím hozzáférhessen az adatbázis-kiszolgálóhoz. További információ: Tűzfalszabályok létrehozása és kezelése az Önálló Azure Database for PostgreSQL-kiszolgálóhoz az Azure Portal használatával.
Ha windowsos számítógépen Linuxos Windows-alrendszer (WSL) keresztül csatlakozik a PostgreSQL-kiszolgálóhoz, hozzá kell adnia a WSL-gazdagép azonosítóját a tűzfalhoz.
Nem rendszergazdai PostgreSQL-felhasználó létrehozása és engedély megadása
Ezután hozzon létre egy nem rendszergazdai felhasználót, és adjon meg minden engedélyt az adatbázisnak.
Az alábbi módszerrel jelszó nélküli kapcsolatot használó, nem rendszergazdai felhasználót hozhat létre.
A következő paranccsal telepítse a Service Csatlakozás or jelszó nélküli bővítményt az Azure CLI-hez:
az extension add --name serviceconnector-passwordless --upgrade
A Microsoft Entra nem rendszergazdai felhasználójának létrehozásához használja az alábbi parancsot:
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 tsv
Amikor a parancs befejeződik, jegyezze fel a felhasználónevet a konzol kimenetében.
Adatok tárolása az Azure Database for PostgreSQL-ből
Most, hogy már rendelkezik egy önálló Azure Database for PostgreSQL-kiszolgálópéldánysal, az adatokat a Spring Cloud Azure használatával tárolhatja.
A Spring Cloud Azure Starter JDBC PostgreSQL modul telepítéséhez adja hozzá a következő függőségeket a pom.xml fájlhoz:
A Spring Cloud Azure Anyagjegyzéke (BOM):
<dependencyManagement> <dependencies> <dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-dependencies</artifactId> <version>5.12.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
Feljegyzés
Ha Spring Boot 2.x-et használ, mindenképpen állítsa be a verziót
4.18.0
.spring-cloud-azure-dependencies
Ezt az anyagjegyzéket (BOM) a<dependencyManagement>
pom.xml fájl szakaszában kell konfigurálni. Ez biztosítja, hogy minden Spring Cloud Azure-függőség ugyanazt a verziót használja. A BOM-hez használt verzióról további információt a Spring Cloud Azure melyik verzióját érdemes használni.A Spring Cloud Azure Starter JDBC PostgreSQL-összetevő:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-jdbc-postgresql</artifactId> </dependency>
Feljegyzés
A jelszó nélküli kapcsolatok a verzió 4.5.0
óta támogatottak.
A Spring Boot konfigurálása az Azure Database for PostgreSQL használatára
Az Azure Database for PostgreSQL-ből a Spring Data JDBC használatával történő adattároláshoz kövesse az alábbi lépéseket az alkalmazás konfigurálásához:
Az Azure Database for PostgreSQL hitelesítő adatainak konfigurálásához adja hozzá az alábbi tulajdonságokat az application.properties konfigurációs fájlhoz.
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=always
Figyelmeztetés
A konfigurációs tulajdonság
spring.sql.init.mode=always
azt jelenti, hogy a Spring Boot automatikusan létrehoz egy adatbázissémát a következőként létrehozott schema.sql fájl használatával, a kiszolgáló minden indításakor. Ez a funkció kiválóan alkalmas tesztelésre, de ne feledje, hogy minden újraindításkor törli az adatokat, ezért éles környezetben ne használja.
Hozza létre az src/main/resources/schema.sql konfigurációs fájlt az adatbázisséma konfigurálásához, majd adja hozzá a következő tartalmat.
DROP TABLE IF EXISTS todo; CREATE TABLE todo (id SERIAL PRIMARY KEY, description VARCHAR(255), details VARCHAR(4096), done BOOLEAN);
Hozzon létre egy új
Todo
Java-osztályt. Ez az osztály egy olyan tartománymodell, amely atodo
Spring Boot által automatikusan létrehozott táblára van leképezve. Az alábbi kód figyelmen kívül hagyja a metódusokat éssetters
agetters
metódusokat.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; }
Szerkessze az indítási osztályfájlt a következő tartalom megjelenítéséhez.
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> { }
Tipp.
Ebben az oktatóanyagban nincsenek hitelesítési műveletek a konfigurációkban vagy a kódban. Az Azure-szolgáltatásokhoz való csatlakozáshoz azonban hitelesítés szükséges. A hitelesítés befejezéséhez az Azure Identity-et kell használnia. A Spring Cloud Azure
DefaultAzureCredential
az Azure Identity-kódtár használatával segít a hitelesítő adatok kódmódosítások nélküli beszerzésében.DefaultAzureCredential
több hitelesítési módszert támogat, és meghatározza, hogy melyik metódust használja futásidőben. Ez a megközelítés lehetővé teszi, hogy az alkalmazás különböző hitelesítési módszereket használjon különböző környezetekben (például helyi és éles környezetekben) környezetspecifikus kód implementálása nélkül. További információ: DefaultAzureCredential.A helyi fejlesztési környezetekben a hitelesítés befejezéséhez használhatja az Azure CLI-t, a Visual Studio Code-ot, a PowerShellt vagy más módszereket. További információ: Azure-hitelesítés Java-fejlesztési környezetekben. A hitelesítés azure-beli üzemeltetési környezetekben való elvégzéséhez javasoljuk a felhasználó által hozzárendelt felügyelt identitás használatát. További információ: Mik az Azure-erőforrások felügyelt identitásai?
Indítsa el az alkalmazást. Az alkalmazás adatokat tárol az adatbázisba. A következő példához hasonló naplók láthatók:
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
Üzembe helyezés az Azure Spring Appsben
Most, hogy a Spring Boot-alkalmazás helyileg fut, ideje éles környezetbe áthelyezni. Az Azure Spring Apps megkönnyíti a Spring Boot-alkalmazások üzembe helyezését az Azure-ban kódmódosítások nélkül. A szolgáltatás kezeli a Spring-alkalmazások infrastruktúráját, hogy a fejlesztők a kódjukra összpontosíthassanak. Az Azure Spring Apps átfogó monitorozási és diagnosztikai, konfigurációkezelési, szolgáltatásfelderítési, CI/CD-integrációs, kék-zöld környezetek és egyebek használatával biztosítja az életciklus-felügyeletet. Az alkalmazás Azure Spring Appsben való üzembe helyezéséről az első alkalmazás üzembe helyezése az Azure Spring Appsben című témakörben olvashat.
Következő lépések
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: