Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, özel bir uygulamaya Azure Cosmos DB için Spring Data için Spring Cloud Azure Starter
Azure Cosmos DB, geliştiricilerin SQL, MongoDB, Graph ve Tablo API'leri gibi çeşitli standart API'leri kullanarak verilerle çalışmasına olanak tanıyan genel olarak dağıtılmış bir veritabanı hizmetidir. Microsoft Spring Boot Starter, geliştiricilerin NoSQL için Azure Cosmos DB ile kolayca tümleşen Spring Boot uygulamalarını kullanmasına olanak tanır.
Önkoşullar
Azure aboneliği - ücretsiz oluşturun.
Java Development Kit (JDK), sürüm 8 veya üzeri.
Azure portalını kullanarak Azure Cosmos DB oluşturma
Azure Cosmos DB örneği oluşturmak için aşağıdaki adımları kullanın:
azure portal
göz atın ve Kaynak oluştur'u seçin.Seçenek Veritabanlarıve ardından Azure Cosmos DBöğesini seçin.
Azure Cosmos DB hesabı oluştur ekranında, NoSQL için Azure Cosmos DB'yi seçin.
Azure Cosmos DB sayfasında aşağıdaki bilgileri girin:
- Veritabanınız için kullanmak istediğiniz Aboneliği seçin.
- Veritabanınız için yeni bir Kaynak grubu mı oluşturulacağını yoksa var olan bir kaynak grubunu mu seçeceğinizi belirtin.
- veritabanınız için URI olarak kullandığınızbenzersiz bir
Hesap Adı girin. Örneğin: contosoaccounttest. - Veritabanınız için Konum belirtin.
- Yalnızca tanıtım amacıyla bir hesap oluşturmak istiyorsanız Ücretsiz Katman İndirimi uygula seçeneğini seçin.
- Varsayılan seçeneklerin ve ayarların geri kalanını olduğu gibi bırakın.
Gözden geçir + oluştur, belirtimlerinizi gözden geçirin ve Oluşturseçin.
Veritabanınız oluşturulduğunda, Azure
Pano veTüm Kaynaklar altında ve Azure Cosmos DB sayfalarınılistelenir. Yeni oluşturulan bir Azure Cosmos DB için bir veritabanı ve kapsayıcı oluşturmak üzere, Hızlı Başlangıç: Azure portalından Azure Cosmos DB hesabı, veritabanı, kapsayıcı ve öğeleri oluşturmabölümündeki Veritabanı ve kapsayıcı ekleme kısmına bakın. Önbelleğinizin özellikler sayfasını açmak için bu konumlardan herhangi biri için veritabanınızı seçebilirsiniz. Veritabanınızın özellikler sayfası görüntülendiğinde, Anahtarlar'ı seçin ve veritabanınızın URI'sini ve erişim anahtarlarını kopyalayın. Spring Boot uygulamanızda bu değerleri kullanırsınız.
Önemli
Yeni oluşturduğunuz Azure Cosmos DB'de, kullanmakta olduğunuz Azure hesabına Owner
rolünü atayın. Daha fazla bilgi için bkz. Azure portalını kullanarak Azure rolleri atama.
Spring Initializr ile Spring Boot uygulaması oluşturma
Azure desteğiyle yeni bir Spring Boot uygulama projesi oluşturmak için aşağıdaki adımları kullanın. Alternatif olarak azure-spring-boot-samples deposundaki spring-cloud-azure-data-cosmos-sample örneğini kullanabilirsiniz. Ardından doğrudan Derleme bölümüne atlayabilir ve uygulamanızıtest edebilirsiniz.
https://start.spring.io/adresine gidin.
Aşağıdaki seçenekleri belirtin:
- Javaile bir Maven projesi oluşturun.
- Spring Boot sürümünüzü 2.7.11olarak belirtin.
- Uygulamanız için Grup ve Yapıt adlarını belirtin.
- Java sürümü için 17 seçin.
- Bağımlılıklara Azure Desteği ekleyin.
Not
Spring Initializr, paket adını oluşturmak için
Grubu veYapıt adlarını kullanır; örneğin: com.example.wingtiptoysdata. Spring Boot sürümü, Azure Desteği tarafından desteklenen sürümden daha yüksek olabilir. Proje otomatik olarak oluşturulduktan sonra Spring Boot sürümünü, Spring-Versions-Mappingiçinde bulabileceğiniz Azure tarafından desteklenen en yüksek sürüme el ile değiştirebilirsiniz.
Daha önce listelenen seçenekleri belirttikten sonra GENERATEöğesini seçin.
İstendiğinde, projeyi yerel bilgisayarınızdaki belirttiğiniz bir konuma indirin ve dosyaları ayıklayın.
Basit Spring Boot uygulamanız artık düzenleme için hazır.
Spring Boot uygulamanızı Azure Spring Boot Starter'ı kullanacak şekilde yapılandırma
Uygulamanızın dizininde pom.xml dosyasını bulun; mesela:
C:\SpringBoot\wingtiptoysdata\pom.xml
-veya-
/users/example/home/wingtiptoysdata/pom.xml
pom.xml dosyasını bir metin düzenleyicisinde açın ve
<dependencies>
öğesine aşağıdakileri ekleyin:<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-data-cosmos</artifactId> </dependency>
Not
Spring Cloud Azure kitaplık sürümlerini bir ürün reçetesi (BOM) kullanarak yönetme hakkında daha fazla bilgi için
Spring Cloud Azure geliştirici kılavuzunun Başlarken bölümüne bakın.pom.xml dosyasını kaydedin ve kapatın.
Spring Boot uygulamanızı Azure Cosmos DB'nizi kullanacak şekilde yapılandırma
uygulamanızın kaynakları dizininde application.properties dosyasını bulun; mesela:
C:\SpringBoot\wingtiptoysdata\src\main\resources\application.properties
-veya-
/users/example/home/wingtiptoysdata/src/main/resources/application.properties
application.properties dosyasını bir metin düzenleyicisinde açın ve dosyaya aşağıdaki satırları ekleyin ve örnek değerleri veritabanınız için uygun özelliklerle değiştirin:
# 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
application.properties dosyasını kaydedin ve kapatın.
Temel veritabanı işlevselliğini uygulamak için örnek kod ekleme
Bu bölümde, kullanıcı verilerini depolamak için iki Java sınıfı oluşturacaksınız. Ardından, User
sınıfının bir örneğini oluşturmak ve veritabanınıza kaydetmek için ana uygulama sınıfınızı değiştirirsiniz.
Kullanıcı verilerini depolamak için temel sınıf tanımlama
Ana uygulama Java dosyanızla aynı dizinde User.java adlı yeni bir dosya oluşturun.
User.java dosyasını bir metin düzenleyicisinde açın ve veritabanınızda değerleri depolayan ve alan genel bir kullanıcı sınıfı tanımlamak için dosyaya aşağıdaki satırları ekleyin:
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); } }
User.java dosyasını kaydedin ve kapatın.
Veri deposu arabirimi tanımlama
Ana uygulama Java dosyanızla aynı dizinde UserRepository.java adlı yeni bir dosya oluşturun.
UserRepository.java dosyasını bir metin düzenleyicisinde açın ve dosyaya aşağıdaki satırları ekleyerek varsayılan
ReactiveCosmosRepository
arabirimini genişleten bir kullanıcı deposu arabirimi tanımlayın: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); }
ReactiveCosmosRepository
arabirimi, başlatıcının önceki sürümündekiDocumentDbRepository
arabiriminin yerini alır. Yeni arabirim, temel kaydetme, silme ve bulma işlemleri için zaman uyumlu ve reaktif API'ler sağlar.UserRepository.java dosyasını kaydedin ve kapatın.
Ana uygulama sınıfını değiştirme
Uygulamanızın paket dizininde ana uygulama Java dosyasını bulun, örneğin:
C:\SpringBoot\wingtiptoysdata\src\main\java\com\example\wingtiptoysdata\WingtiptoysdataApplication.java
-veya-
/users/example/home/wingtiptoysdata/src/main/java/com/example/wingtiptoysdata/WingtiptoysdataApplication.java
Ana uygulama Java dosyasını bir metin düzenleyicisinde açın ve dosyaya aşağıdaki satırları ekleyin:
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()); } }
Ana uygulama Java dosyasını kaydedin ve kapatın.
Uygulamanızı derleme ve test etme
Bir komut istemi açın ve pom.xml dosyanızın bulunduğu klasöre gidin; mesela:
cd C:\SpringBoot\wingtiptoysdata
-veya-
cd /users/example/home/wingtiptoysdata
Uygulamanızı derlemek ve çalıştırmak için aşağıdaki komutu kullanın:
./mvnw clean
Bu komut, uygulamayı test aşamasının bir parçası olarak otomatik olarak çalıştırır. Ayrıca şunları da kullanabilirsiniz:
./mvnw spring-boot:run
Bazı derleme ve test çıktılarının ardından konsol pencereniz aşağıdaki örneğe benzer bir ileti görüntüler:
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
Bu çıkış iletileri, verilerin Azure Cosmos DB'ye başarıyla kaydedildiğini ve ardından yeniden alındığını gösterir.
Kaynakları temizleme
Bu uygulamayı kullanmaya devam etmeyecekseniz, daha önce oluşturduğunuz Azure Cosmos DB'yi içeren kaynak grubunu sildiğinizden emin olun. Kaynak grubunu Azure portalından silebilirsiniz.
Sonraki adımlar
Spring ve Azure hakkında daha fazla bilgi edinmek için Azure'da Spring belge merkezine geçin.
Diğer kaynaklar
Azure Cosmos DB ve Java kullanma hakkında daha fazla bilgi için aşağıdaki makalelere bakın:
Azure Cosmos DB: Java ve Azure portalını kullanarak bir belge veritabanı oluşturma
Azure Cosmos DB için Spring Data
Azure'da Spring Boot uygulamalarını kullanma hakkında daha fazla bilgi için aşağıdaki makalelere bakın:
[Spring Data için Spring Cloud Azure Starter Azure Cosmos DB]
Azure Container Service bir Kubernetes Kümesinde Spring Boot Uygulaması Çalıştırma
Azure'ı Java ile kullanma hakkında daha fazla bilgi için bkz. Java Geliştiricileri için Azure
Spring Framework, Java geliştiricilerinin kurumsal düzeyde uygulamalar oluşturmalarına yardımcı olan açık kaynaklı bir çözümdür. Bu platformun üzerinde oluşturulan en popüler projelerden biri, tek başına Java uygulamaları oluşturmak için basitleştirilmiş bir yaklaşım sağlayan Spring Boot'dur. Geliştiricilerin Spring Boot'ı kullanmaya başlamasına yardımcı olmak için https://github.com/spring-guides/adresinde çeşitli örnek Spring Boot paketleri mevcuttur. temel Spring Boot projeleri listesinden seçim yapmaya ek olarak, Spring Initializr geliştiricilerin özel Spring Boot uygulamaları oluşturmaya başlamasına yardımcı olur.