Sdílet prostřednictvím


Přístup k datům pomocí rozhraní API NoSQL služby Azure Cosmos DB

V tomto článku se dozvíte, jak do aplikace přidat Spring Cloud Azure Starter for Spring Data for Azure Cosmos DB. Tato úvodní sada umožňuje ukládat data do databáze Azure Cosmos DB a načítat je z databáze Azure Cosmos DB pomocí Spring Data a Azure Cosmos DB for NoSQL. Tento článek začíná tím, že vám ukáže, jak vytvořit službu Azure Cosmos DB prostřednictvím webu Azure Portal. V tomto článku se dozvíte, jak pomocí aplikace Spring Initializr vytvořit vlastní aplikaci Spring Boot, kterou můžete použít s úvodní aplikací Spring Boot.

Azure Cosmos DB je globálně distribuovaná databázová služba, která vývojářům umožňuje pracovat s daty pomocí různých standardních rozhraní API, jako jsou SQL, MongoDB, Graph a Table API. Úvodní sada Spring Boot od Microsoftu umožňuje vývojářům používat aplikace Spring Boot, které se snadno integrují se službou Azure Cosmos DB for NoSQL.

Požadavky

Vytvoření služby Azure Cosmos DB pomocí webu Azure Portal

K vytvoření instance služby Azure Cosmos DB použijte následující postup:

  1. Přejděte do Azure portalu a vyberte Vytvořit prostředek.

  2. Vyberte Databázea pak vyberte Azure Cosmos DB.

  3. Na obrazovce Vytvořit účet Azure Cosmos DB vyberte možnost Azure Cosmos DB pro NoSQL.

    snímek obrazovky portálu Azure, který ukazuje stránku Vytvoření účtu Azure Cosmos DB se zvýrazněnou možností Azure Cosmos DB for NoSQL

  4. Na stránce azure Cosmos DB zadejte následující informace:

    • Zvolte předplatné , které chcete použít pro vaši databázi.
    • Určete, jestli chcete vytvořit novou skupinu prostředků pro vaši databázi, nebo zvolit existující skupinu prostředků.
    • Zadejte jedinečný název účtu , který použijete jako identifikátor URI pro vaši databázi. Příklad: contosoaccounttest.
    • Zadejte umístění pro vaši databázi.
    • Vyberte Aplikovat slevu pro úroveň zdarma, pokud chcete vytvořit účet pouze pro demonstrační účely.
    • Ponechte zbývající výchozí možnosti a nastavení tak, jak jsou.
  5. Vyberte Zkontrolovat a vytvořit, zkontrolujte vaše specifikace a vyberte Vytvořit.

    snímek obrazovky Azure Portalu zobrazující stránku Vytvořit účet služby Azure Cosmos DB s nastaveními Azure Cosmos DB for NoSQL

  6. Po vytvoření databáze je uvedena na řídicím panelu Azure a na stránce Všechny prostředky a Azure Cosmos DB. Pokud chcete vytvořit databázi a kontejner pro nově vytvořenou službu Azure Cosmos DB, přečtěte si část Přidání databáze a kontejneru rychlého startu : Vytvoření účtu služby Azure Cosmos DB, databáze, kontejneru a položek z webu Azure Portal. Pro každé z těchto umístění můžete vybrat databázi a otevřít stránku vlastností vaší mezipaměti.

  7. Když se zobrazí stránka vlastností pro vaši databázi, vyberte možnost Klíče a zkopírujte URI a případný přístupový klíč pro vaši databázi. Tyto hodnoty použijete v aplikaci Spring Boot.

    snímek obrazovky webu Azure Portal zobrazující účet služby Azure Cosmos DB se stránkou Klíče

Důležitý

V nově vytvořené službě Azure Cosmos DB přiřaďte k účtu Azure, který právě používáte, roli Owner. Další informace najdete v tématu Přiřazení rolí Azure pomocí webu Azure Portal.

Vytvoření aplikace Spring Boot pomocí aplikace Spring Initializr

Pomocí následujících kroků vytvořte nový projekt aplikace Spring Boot s podporou Azure. Alternativně můžete použít ukázku spring-cloud-azure-data-cosmos-sample v azure-spring-boot-samples repozitáři. Pak můžete přeskočit přímo na Sestavení a otestování aplikace.

  1. Přejděte na https://start.spring.io/.

  2. Zadejte následující možnosti:

    • Vygenerování projektu Maven pomocíJavy .
    • Zadejte verzi Spring Boot pro 2.7.11.
    • Zadejte názvy skupiny a artefaktů pro vaši aplikaci.
    • Jako verzi Javy vyberte 17.
    • Do závislostí přidejte Azure Support.

    Poznámka

    Spring Initializr používá k vytvoření názvu balíčku názvy skupiny a Artifact; Například: com.example.wingtiptoysdata.

    Verze Spring Bootu může být vyšší než verze podporovaná podporou Azure. Po automatickém vygenerování projektu můžete ručně změnit verzi Spring Boot na nejnovější verzi podporovanou Azure, kterou najdete v Mapování verzí Spring.

  3. Po zadání výše uvedených možností vyberte GENEROVAT.

  4. Jakmile budete vyzváni, stáhněte projekt do složky na místním počítači a extrahujte soubory.

Vaše jednoduchá aplikace Spring Boot je teď připravená k úpravám.

Konfigurace aplikace Spring Boot pro použití úvodní sady Azure Spring Boot

  1. Vyhledejte soubor pom.xml v adresáři vaší aplikace; například:

    C:\SpringBoot\wingtiptoysdata\pom.xml

    -nebo-

    /users/example/home/wingtiptoysdata/pom.xml

  2. Otevřete soubor pom.xml v textovém editoru a do elementu <dependencies> přidejte následující:

    <dependency>
      <groupId>com.azure.spring</groupId>
      <artifactId>spring-cloud-azure-starter-data-cosmos</artifactId>
    </dependency>
    

    Poznámka

    Další informace o správě verzí knihovny Azure Spring Cloud pomocí kusovníku najdete v části Začínáme příručky pro vývojáře Spring Cloud Azure.

  3. Uložte a zavřete soubor pom.xml.

Konfigurace aplikace Spring Boot pro použití služby Azure Cosmos DB

  1. Vyhledejte soubor application.properties v adresáři resources vaší aplikace; například:

    C:\SpringBoot\wingtiptoysdata\src\main\resources\application.properties

    -nebo-

    /users/example/home/wingtiptoysdata/src/main/resources/application.properties

  2. Otevřete soubor application.properties v textovém editoru a přidejte do souboru následující řádky a nahraďte ukázkové hodnoty odpovídajícími vlastnostmi pro vaši databázi:

    # Specify the DNS URI of your Azure Cosmos DB.
    spring.cloud.azure.cosmos.endpoint=https://contosoaccounttest.documents.azure.com:443/
    spring.cloud.azure.cosmos.key=your-cosmosdb-account-key
    
    # Specify the name of your database.
    spring.cloud.azure.cosmos.database=contosoaccounttest
    spring.cloud.azure.cosmos.populate-query-metrics=true
    
  3. Uložte a zavřete soubor application.properties.

Přidání ukázkového kódu pro implementaci základních databázových funkcí

V této části vytvoříte dvě třídy Javy pro ukládání uživatelských dat. Potom upravíte hlavní třídu aplikace tak, aby vytvořila instanci třídy User a uložila ji do databáze.

Definování základní třídy pro ukládání uživatelských dat

  1. Vytvořte nový soubor s názvem User.java ve stejném adresáři jako hlavní soubor Java aplikace.

  2. Otevřete soubor User.java v textovém editoru a přidejte do souboru následující řádky, které definují obecnou třídu uživatele, která ukládá a načítá hodnoty v databázi:

    package com.example.wingtiptoysdata;
    
    import com.azure.spring.data.cosmos.core.mapping.Container;
    import com.azure.spring.data.cosmos.core.mapping.PartitionKey;
    import org.springframework.data.annotation.Id;
    
    @Container(containerName = "mycollection")
    public class User {
        @Id
        private String id;
        private String firstName;
        @PartitionKey
        private String lastName;
        private String address;
    
        public User() {
    
        }
    
        public User(String id, String firstName, String lastName, String address) {
            this.id = id;
            this.firstName = firstName;
            this.lastName = lastName;
            this.address = address;
        }
    
        public String getId() {
            return id;
        }
    
        public void setId(String id) {
            this.id = id;
        }
    
        public String getFirstName() {
            return firstName;
        }
    
        public void setFirstName(String firstName) {
            this.firstName = firstName;
        }
    
        public String getLastName() {
            return lastName;
        }
    
        public void setLastName(String lastName) {
            this.lastName = lastName;
        }
    
        public String getAddress() {
            return address;
        }
    
        public void setAddress(String address) {
            this.address = address;
        }
    
        @Override
        public String toString() {
            return String.format("%s %s, %s", firstName, lastName, address);
        }
    }
    
  3. Uložte a zavřete soubor User.java.

Definování rozhraní úložiště dat

  1. Vytvořte nový soubor s názvem UserRepository.java ve stejném adresáři jako hlavní soubor Java aplikace.

  2. Otevřete soubor UserRepository.java v textovém editoru a přidejte do souboru následující řádky, které definují rozhraní úložiště uživatelů, které rozšiřuje výchozí rozhraní ReactiveCosmosRepository:

    package com.example.wingtiptoysdata;
    
    import com.azure.spring.data.cosmos.repository.ReactiveCosmosRepository;
    import org.springframework.stereotype.Repository;
    import reactor.core.publisher.Flux;
    
    @Repository
    public interface UserRepository extends ReactiveCosmosRepository<User, String> {
        Flux<User> findByFirstName(String firstName);
    }
    

    Rozhraní ReactiveCosmosRepository nahrazuje rozhraní DocumentDbRepository z předchozí verze úvodní sady. Nové rozhraní poskytuje synchronní a reaktivní rozhraní API pro základní operace ukládání, odstraňování a hledání.

  3. Uložte a zavřete soubor UserRepository.java.

Úprava hlavní třídy aplikace

  1. V adresáři balíčku vaší aplikace vyhledejte hlavní soubor Java aplikace, například:

    C:\SpringBoot\wingtiptoysdata\src\main\java\com\example\wingtiptoysdata\WingtiptoysdataApplication.java

    -nebo-

    /users/example/home/wingtiptoysdata/src/main/java/com/example/wingtiptoysdata/WingtiptoysdataApplication.java

  2. Otevřete hlavní soubor Java aplikace v textovém editoru a přidejte do souboru následující řádky:

    package com.example.wingtiptoysdata;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.CommandLineRunner;
    import org.springframework.util.Assert;
    import reactor.core.publisher.Flux;
    import reactor.core.publisher.Mono;
    
    import java.util.Optional;
    
    @SpringBootApplication
    public class WingtiptoysdataApplication implements CommandLineRunner {
    
        private static final Logger LOGGER = LoggerFactory.getLogger(WingtiptoysdataApplication.class);
    
        @Autowired
        private UserRepository repository;
    
        public static void main(String[] args) {
            SpringApplication.run(WingtiptoysdataApplication.class, args);
        }
    
        public void run(String... var1) {
            this.repository.deleteAll().block();
            LOGGER.info("Deleted all data in container.");
    
            final User testUser = new User("testId", "testFirstName", "testLastName", "test address line one");
    
            // Save the User class to Azure Cosmos DB database.
            final Mono<User> saveUserMono = repository.save(testUser);
    
            final Flux<User> firstNameUserFlux = repository.findByFirstName("testFirstName");
    
            //  Nothing happens until we subscribe to these Monos.
            //  findById won't return the user as user isn't present.
            final Mono<User> findByIdMono = repository.findById(testUser.getId());
            final User findByIdUser = findByIdMono.block();
            Assert.isNull(findByIdUser, "User must be null");
    
            final User savedUser = saveUserMono.block();
            Assert.state(savedUser != null, "Saved user must not be null");
            Assert.state(savedUser.getFirstName().equals(testUser.getFirstName()), "Saved user first name doesn't match");
    
            firstNameUserFlux.collectList().block();
    
            final Optional<User> optionalUserResult = repository.findById(testUser.getId()).blockOptional();
            Assert.isTrue(optionalUserResult.isPresent(), "Cannot find user.");
    
            final User result = optionalUserResult.get();
            Assert.state(result.getFirstName().equals(testUser.getFirstName()), "query result firstName doesn't match!");
            Assert.state(result.getLastName().equals(testUser.getLastName()), "query result lastName doesn't match!");
    
            LOGGER.info("findOne in User collection get result: {}", result.toString());
        }
    }
    
  3. Uložte a zavřete hlavní soubor Java aplikace.

Sestavení a otestování aplikace

  1. Otevřete příkazový řádek a přejděte do složky, ve které se nachází váš soubor pom.xml; například:

    cd C:\SpringBoot\wingtiptoysdata

    -nebo-

    cd /users/example/home/wingtiptoysdata

  2. K sestavení a spuštění aplikace použijte následující příkaz:

    ./mvnw clean
    

    Tento příkaz spustí aplikaci automaticky jako součást testovací fáze. Můžete také použít:

    ./mvnw spring-boot:run
    

    Po nějakém výstupu sestavení a testu se v okně konzoly zobrazí zpráva podobná následujícímu příkladu:

    INFO 1365 --- [           main] c.e.w.WingtiptoysdataApplication         : Deleted all data in container.
    
    ... (omitting connection and diagnostics output) ...
    
    INFO 1365 --- [           main] c.e.w.WingtiptoysdataApplication         : findOne in User collection get result: testFirstName testLastName, test address line one
    

    Tyto výstupní zprávy ukazují, že se data úspěšně uložila do služby Azure Cosmos DB a pak se znovu načetla.

Vyčištění zdrojů

Pokud tuto aplikaci nebudete dál používat, nezapomeňte odstranit skupinu prostředků obsahující službu Azure Cosmos DB, kterou jste vytvořili dříve. Skupinu prostředků můžete odstranit z webu Azure Portal.

Další kroky

Další informace o Springu a Azure najdete v centru dokumentace Spring on Azure.

Další zdroje informací

Další informace o používání služby Azure Cosmos DB a Javy najdete v následujících článcích:

Další informace o používání aplikací Spring Boot v Azure najdete v následujících článcích:

Další informace o používání Azure s Javou najdete v Azure pro vývojáře v Javě a Práce s Azure DevOps a javou.

Spring Framework je opensourcové řešení, které vývojářům v Javě pomáhá vytvářet aplikace na podnikové úrovni. Jedním z nejoblíbenějších projektů, které jsou založené na této platformě, je Spring Boot, který poskytuje zjednodušený přístup k vytváření samostatných aplikací v Javě. Aby vývojáři mohli začít používat Spring Boot, je k dispozici několik ukázkových balíčků Spring Boot na https://github.com/spring-guides/. Kromě výběru ze seznamu základních projektů Spring Boot vám Spring Initializr pomůže vývojářům začít vytvářet vlastní aplikace Spring Boot.