Spring Data JDBC használata Azure Database for PostgreSQL

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

  • PostgreSQL parancssori ügyfél.

  • 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.

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.

  1. 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 --upgrade
    
  2. A 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 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-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-dependencies verziót 7.4.0 értékre.

    Ha a Spring Boot 3.5.x-et használja, állítsa a spring-cloud-azure-dependencies verziót 6.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-dependencies verziót 4.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:

  1. 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=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ő 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.

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.

  1. 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 --upgrade
    
  2. A 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 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-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-dependencies verziót 7.4.0 értékre.

    Ha a Spring Boot 3.5.x-et használja, állítsa a spring-cloud-azure-dependencies verziót 6.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-dependencies verziót 4.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:

  1. 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=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ő 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.

  1. 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);
    
  1. Hozzon létre egy új Todo Java osztályt. Ez az osztály egy olyan tartománymodell, amely a todo Spring Boot által automatikusan létrehozott táblára van leképezve. Az alábbi kód figyelmen kívül hagyja a getters és a setters 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;
    
    }
    
  2. 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 DefaultAzureCredential használ, amelyet az Azure Identitástár biztosít a hitelesítő adatok kódmódosítások nélküli beszerzéséhez.

    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á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?

  3. 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.

Következő lépések