Přístup k datům pomocí rozhraní API NoSQL služby Azure Cosmos DB
V tomto článku se dozvíte, jak do vlastní 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
Předplatné Azure – vytvořte si ho zdarma.
Java Development Kit (JDK) verze 8 nebo vyšší.
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:
Přejděte na web Azure Portal a vyberte Vytvořit prostředek.
Vyberte Databáze a pak vyberte Azure Cosmos DB.
Na obrazovce Vytvořit účet služby Azure Cosmos DB vyberte Azure Cosmos DB for NoSQL.
Na stránce Azure Cosmos DB zadejte následující informace:
- Zvolte Předplatné, které chcete použít pro svou databázi.
- Určete, že chcete pro databázi vytvořit novou skupinu prostředků, nebo zvolte existující skupinu.
- 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í databáze.
- Pokud chcete vytvořit účet pouze pro demonstrační účely, vyberte Možnost Použít slevu úrovně Free.
- Ponechte zbývající výchozí možnosti a nastavení tak, jak jsou.
Vyberte Zkontrolovat a vytvořit, zkontrolujte specifikace a vyberte Vytvořit.
Po vytvoření se databáze zobrazí na řídicím panelu Azure a na stránkách 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 Rychlý start přidání databáze a kontejneru: 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.
Když se zobrazí stránka vlastností databáze, vyberte Klíče a zkopírujte identifikátor URI a přístupové klíče pro vaši databázi. Tyto hodnoty použijete v aplikaci Spring Boot.
Důležité
V nově vytvořené službě Azure Cosmos DB přiřaďte Owner
roli k účtu Azure, který právě používáte. Další informace viz Přiřazení rolí Azure pomocí webu Azure Portal.
Vytvoření aplikace Spring Boot pomocí aplikace Spring Initializr
Pomocí následujícího postupu vytvořte nový projekt aplikace Spring Boot s podporou Azure. Alternativně můžete použít ukázku spring-cloud-azure-data-cosmos-sample v úložišti azure-spring-boot-samples . Pak můžete přeskočit přímo k sestavení a otestování aplikace.
Přejděte na https://start.spring.io/.
Zadejte následující možnosti:
- Vygenerujte projekt Maven v Javě.
- Zadejte verzi Spring Bootu na verzi 2.7.11.
- Zadejte názvy skupiny (Group) a artefaktu (Artifact) pro vaši aplikaci.
- Jako verzi Javy vyberte 17 .
- Přidejte podporu Azure do závislostí.
Poznámka:
Spring Initializr používá k vytvoření názvu balíčku názvy Group 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 nejvyšší podporovanou verzi Azure, kterou najdete v mapování spring-versions.
Po zadání výše uvedených možností vyberte GENEROVAT.
Po zobrazení výzvy stáhněte projekt na místní počítač 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 Spring Boot pro Azure
V adresáři vaší aplikace vyhledejte soubor pom.xml. Například:
C:\SpringBoot\wingtiptoysdata\pom.xml
nebo
/users/example/home/wingtiptoysdata/pom.xml
Otevřete soubor pom.xml v textovém editoru a do elementu
<dependencies>
přidejte následující kód:<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 s příručkou pro vývojáře Spring Cloud Azure.
Uložte a zavřete soubor pom.xml.
Konfigurace aplikace Spring Boot pro použití služby Azure Cosmos DB
V adresáři resources vaší aplikace vyhledejte soubor application.properties. Například:
C:\SpringBoot\wingtiptoysdata\src\main\resources\application.properties
nebo
/users/example/home/wingtiptoysdata/src/main/resources/application.properties
Otevřete soubor application.properties v textovém editoru a přidejte do něj následující řádky, přičemž 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
Uložte a zavřete soubor application.properties.
Přidání vzorové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 User
třídy a uložila ji do databáze.
Definice základní třídy pro ukládání uživatelských dat
Ve stejném adresáři, ve kterém se nachází hlavní soubor Java vaší aplikace, vytvořte nový soubor User.java.
Otevřete soubor User.java v textovém editoru a přidejte do něj následující řádky definující obecnou třídu uživatele, která ukládá hodnoty ve vaší databázi a načítá je z ní:
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); } }
Uložte a zavřete soubor User.java.
Definice rozhraní úložiště dat
Ve stejném adresáři, ve kterém se nachází hlavní soubor Java vaší aplikace, vytvořte nový soubor UserRepository.java.
Otevřete soubor UserRepository.java v textovém editoru a přidejte do něj následující řádky definující rozhraní úložiště uživatele, 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 vyhledávání.Uložte a zavřete soubor UserRepository.java.
Úprava hlavní třídy aplikace
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
Otevřete hlavní soubor Java aplikace v textovém editoru a přidejte do něj 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()); } }
Uložte a zavřete hlavní soubor Java aplikace.
Sestavení a otestování aplikace
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
Pomocí následujícího příkazu aplikaci sestavte a spusťte:
./mvnw clean
Tento příkaz aplikaci automaticky spustí ve fázi testování. Můžete použít také tento příkaz:
./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í prostředků
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
Pokud se chcete dozvědět více o architektuře Spring a Azure, přejděte do centra dokumentace Spring v Azure.
Další materiály
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:
[Spring Cloud Azure Starter for Spring Data Azure Cosmos DB]
Nasazení aplikace Spring Boot do Linuxu ve službě Aplikace Azure Service
Spuštění aplikace Spring Boot v clusteru Kubernetes ve službě Azure Container Service
Další informace o používání Javy v Azure najdete na webech Azure pro vývojáře v Javě a Práce s Azure DevOps a Javou.
Spring Framework je open source řešení, které pomáhá vývojářům v Javě vytvářet aplikace na podnikové úrovni. Jedním z nejoblíbenějších projektů vytvořených s využitím této platformy je architektura Spring Boot, která nabízí zjednodušený přístup k vytváření samostatných aplikací v jazyce Java. Na adrese https://github.com/spring-guides/ je k dispozici několik ukázkových balíčků Spring Boot, které vývojářům pomůžou začít s architekturou Spring Boot. Kromě možnosti výběru ze seznamu základních projektů Spring Boot může vývojářům pomoct začít vytvářet vlastní aplikace Spring Boot i aplikace Spring Initializr.