Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez az oktatóanyag bemutatja, hogyan tárolhat adatokat egy Azure Database for PostgreSQL adatbázisban a Spring Data JDBC használatával.
JDBC a hagyományos relációs adatbázisokhoz való csatlakozáshoz használt szabványos Java API.
Ebben az oktatóanyagban két hitelesítési módszert használunk: Microsoft Entra hitelesítést és PostgreSQL-hitelesítést. A Passwordless lapon a Microsoft Entra hitelesítés, a Password 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és használatával 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, tárolja ezeket a hitelesítő adatokat a user táblában. Mivel ezek a jelszavak a PostgreSQL-ben vannak tárolva, saját maga kell kezelnie a jelszavak rotálását.
Előfeltételek
Egy Azure előfizetés – ingyenes előfizetés.
Java Fejlesztői készlet (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 a Maven Project lehetőséget, é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. Ezután válassza Java 8- vagy újabb verziót.
- Ha nincs ilyenje, hozzon létre egy Azure Database for PostgreSQL rugalmas kiszolgálópéldányt
postgresqlflexibletestés egydemonevű adatbázist. Útmutatásért lásd: Gyorsindítás: Azure Database for PostgreSQL – Rugalmas kiszolgáló létrehozása az Azure portálon.
A mintaalkalmazás megtekintése
Ebben az oktatóanyagban egy mintaalkalmazást kódel. Ha gyorsabban szeretne haladni, az alkalmazás már kódolt, és elérhető a https://github.com/Azure-Samples/quickstart-spring-data-jdbc-postgresql címen.
Tűzfalszabály konfigurálása a PostgreSQL-kiszolgálóhoz
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ó: Firewall-szabályok Azure Database for PostgreSQL – Rugalmas kiszolgáló.
Ha Windows számítógép Linuxos Windows-alrendszer (WSL) kiszolgálójáró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 Connector jelszó nélküli bővítményt a Azure CLI:
az extension add --name serviceconnector-passwordless --upgradeA következő paranccsal hozza létre a Microsoft Entra nem rendszergazdai felhasználót:
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 tsvAmikor a parancs befejeződik, jegyezze fel a felhasználónevet a konzol kimenetében.
Adatok tárolása az Azure Database for PostgreSQL-ben
Most, hogy rendelkezik egy Azure Database for PostgreSQL rugalmas kiszolgálópéldánysal, a Spring Cloud Azure használatával tárolhatja az adatokat.
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ék (BOM):
<dependencyManagement> <dependencies> <dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-dependencies</artifactId> <version>7.4.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>Feljegyzés
Ha a Spring Boot 4.0.x-et használja, állítsa a
spring-cloud-azure-dependenciesverziót7.4.0értékre.Ha a Spring Boot 3.5.x-et használja, állítsa a
spring-cloud-azure-dependenciesverziót6.5.0értékre.Ha a Spring Boot 3.1.x-3.5.x verziót használja, mindenképpen állítsa be a verziót
spring-cloud-azure-dependencies-ra/c1.Ha a Spring Boot 2.x-et használja, mindenképpen állítsa be a
spring-cloud-azure-dependenciesverziót4.20.0-re.Ezt az anyagjegyzéket (BOM) a
<dependencyManagement>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.Az anyagjegyzékhez használt verzióval kapcsolatos további információkért lásd: Melyik verzióját a Spring Cloud Azure-nak érdemes használnom?.
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 Azure Database for PostgreSQL használatára
A Spring Data JDBC-vel Azure Database for PostgreSQL adatainak tárolásához kövesse az alábbi lépéseket az alkalmazás konfigurálásához:
Konfigurálja Azure Database for PostgreSQL hitelesítő adatait úgy, hogy hozzáadja a következő tulajdonságokat a 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=alwaysFigyelmeztetés
A konfigurációs tulajdonság
spring.sql.init.mode=alwaysazt jelenti, hogy a Spring Boot automatikusan létrehoz egy adatbázissémát a következő schema.sql fájl használatával, minden alkalommal, amikor a kiszolgáló elindul. Ez a funkció kiválóan alkalmas tesztelésre, de minden újraindításkor törli az adatokat. Ne használja éles környezetben.
- Ha nincs ilyenje, hozzon létre egy Azure Database for PostgreSQL
postgresqlsingletestnevű egykiszolgálós példányt és egydemonevű adatbázist. Útmutatásért lásd: Gyorskezdés: Azure Database for PostgreSQL-kiszolgáló létrehozása az Azure portál használatával.
A mintaalkalmazás megtekintése
Ebben a cikkben egy mintaalkalmazást kódel. Ha gyorsabban szeretne haladni, az alkalmazás már kódolt, és elérhető a https://github.com/Azure-Samples/quickstart-spring-data-jdbc-postgresql címen.
Tűzfalszabály konfigurálása a PostgreSQL-kiszolgálóhoz
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ó: A Azure Database for PostgreSQL – Önálló kiszolgáló tűzfalszabályainak létrehozása és kezelése a Azure portál használatával.
Ha Windows számítógép Linuxos Windows-alrendszer (WSL) kiszolgálójáró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 Connector jelszó nélküli bővítményt a Azure CLI:
az extension add --name serviceconnector-passwordless --upgradeA következő paranccsal hozza létre a Microsoft Entra nem rendszergazdai felhasználót:
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 tsvAmikor a parancs befejeződik, jegyezze fel a felhasználónevet a konzol kimenetében.
Adatok tárolása az Azure Database for PostgreSQL-ben
Most, hogy rendelkezik egy Azure Database for PostgreSQL egykiszolgálós példánnyal, a Spring Cloud Azure használatával tárolhat adatokat.
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ék (BOM):
<dependencyManagement> <dependencies> <dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-dependencies</artifactId> <version>7.4.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>Feljegyzés
Ha a Spring Boot 4.0.x-et használja, állítsa a
spring-cloud-azure-dependenciesverziót7.4.0értékre.Ha a Spring Boot 3.5.x-et használja, állítsa a
spring-cloud-azure-dependenciesverziót6.5.0értékre.Ha a Spring Boot 3.1.x-3.5.x verziót használja, mindenképpen állítsa be a verziót
spring-cloud-azure-dependencies-ra/c1.Ha a Spring Boot 2.x-et használja, mindenképpen állítsa be a
spring-cloud-azure-dependenciesverziót4.20.0-re.Ezt az anyagjegyzéket (BOM) a
<dependencyManagement>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.Az anyagjegyzékhez használt verzióval kapcsolatos további információkért lásd: Melyik verzióját a Spring Cloud Azure-nak érdemes használnom?.
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 Azure Database for PostgreSQL használatára
A Spring Data JDBC-vel Azure Database for PostgreSQL adatainak tárolásához kövesse az alábbi lépéseket az alkalmazás konfigurálásához:
Konfigurálja Azure Database for PostgreSQL hitelesítő adatait úgy, hogy hozzáadja a következő tulajdonságokat a 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=alwaysFigyelmeztetés
A konfigurációs tulajdonság
spring.sql.init.mode=alwaysazt jelenti, hogy a Spring Boot automatikusan létrehoz egy adatbázissémát a következő schema.sql fájl használatával, minden alkalommal, amikor a kiszolgáló elindul. Ez a funkció kiválóan alkalmas tesztelésre, de minden újraindításkor törli az adatokat. Ne használja éles környezetben.
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
TodoJava osztályt. Ez az osztály egy olyan tartománymodell, amely atodoSpring Boot által automatikusan létrehozott táblára van leképezve. Az alábbi kód figyelmen kívül hagyja agettersés asettersmetó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 Azure Identitást kell használnia. A Spring Cloud Azure
DefaultAzureCredentialhasznál, amelyet az Azure Identitástár biztosít a hitelesítő adatok kódmódosítások nélküli beszerzéséhez.DefaultAzureCredentialtö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álhat Azure CLI, Visual Studio Code, PowerShellt vagy más módszereket. További információ: Azure hitelesítés Java fejlesztési környezetekben. Ha Azure üzemeltetési környezetekben szeretné elvégezni a hitelesítést, javasoljuk, hogy használja a felhasználó által hozzárendelt felügyelt identitást. További információ: Mi 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 a Azure Spring Apps
Most, hogy a Spring Boot-alkalmazás helyileg fut, itt az ideje élesíteni. Azure Spring Apps megkönnyíti a Spring Boot-alkalmazások Azure való üzembe helyezését 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. Azure Spring Apps teljes körű monitorozás és diagnosztika, konfigurációkezelés, szolgáltatásfelderítés, CI/CD-integráció, kék-zöld környezetek és egyebek használatával biztosítja az életciklus-felügyeletet. Az alkalmazás Azure Spring Apps való üzembe helyezéséről a A Azure Spring Apps első alkalmazás üzembe helyezéséről szóló cikkben olvashat.