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 Spring Cloud Azure ve Spring Data'nın birlikte nasıl kullanılabildiği açıklanmaktadır.
Spring Data Azure Cosmos DB desteği
Azure Cosmos DB, geliştiricilerin SQL, MongoDB, Graph ve Azure Tablo depolama gibi çeşitli standart API'leri kullanarak verilerle çalışmasına olanak tanıyan küresel olarak dağıtılmış bir veritabanı hizmetidir.
Bağımlılık kurulumu
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter-data-cosmos</artifactId>
</dependency>
Konfigürasyon
Not
Azure kaynağına erişim için Microsoft Entra ID ile kimlik doğrulaması yapmak ve yetkilendirmek için bir güvenlik sorumlusu kullanıyorsanız güvenlik sorumlusuna Azure kaynağına erişmek için yeterli izin verildiğinden emin olun. Daha fazla bilgi için bkz. Microsoft Entra ID ile erişimi yetkilendirme.
Aşağıdaki tabloda spring-cloud-azure-starter-data-cosmosyapılandırılabilir özellikleri listelenir:
| Mülk | Açıklama |
|---|---|
spring.cloud.azure.cosmos.enabled |
Azure Cosmos DB Hizmeti'nin etkinleştirilip etkinleştirilmediğini gösteren değer. Varsayılan değer true. |
spring.cloud.azure.cosmos.database |
Azure Cosmos DB veritabanı kimliği. |
spring.cloud.azure.cosmos.endpoint |
Azure Cosmos DB'ye bağlanmak için URI. |
spring.cloud.azure.cosmos.key |
Azure Cosmos DB'ye bağlanmak için PrivateKey. |
spring.cloud.azure.cosmos.credential.client-certificate-password |
Sertifika dosyasının parolası. |
spring.cloud.azure.cosmos.credential.client-certificate-path |
Azure ile hizmet sorumlusu kimlik doğrulaması gerçekleştirirken kullanılacak PEM sertifika dosyasının yolu. |
spring.cloud.azure.cosmos.credential.client-id |
Azure ile hizmet sorumlusu kimlik doğrulaması gerçekleştirirken kullanılacak istemci kimliği. |
spring.cloud.azure.cosmos.credential.client-secret |
Azure ile hizmet sorumlusu kimlik doğrulaması gerçekleştirirken kullanılacak istemci gizli dizisi. |
spring.cloud.azure.cosmos.credential.managed-identity-enabled |
Yönetilen kimliğin etkinleştirilip etkinleştirilmeyileceği. Varsayılan değer false. |
spring.cloud.azure.cosmos.credential.password |
Azure ile kullanıcı adı/parola kimlik doğrulaması gerçekleştirirken kullanılacak parola. |
spring.cloud.azure.cosmos.credential.username |
Azure ile kullanıcı adı/parola kimlik doğrulaması gerçekleştirirken kullanılacak kullanıcı adı. |
spring.cloud.azure.cosmos.populate-query-metrics |
Tanılama dizelerinin ve sorgu ölçümlerinin doldurulup doldurulmayacağını gösteren değer. Varsayılan değer false. |
spring.cloud.azure.cosmos.consistency-level |
Azure Cosmos DB için tutarlılık düzeyi. |
Temel kavramlar
Aşağıdaki listede Spring Data desteğinin temel kavramları gösterilmektedir:
Spring Data
CrudRepositoryveReactiveCrudRepository, aşağıdaki temel CRUD işlevselliğini sağlar:- kurtarmak
- tümünüBul
- kimliğine göre bul
- hepsini sil
- kimlikle silme
- varlığı silme
Spring Data @Id ek açıklaması. Etki alanı sınıfındaki bir alanı Azure Cosmos DB belgesinin
ideşlemenin iki yolu vardır:-
@Idile etki alanı sınıfında bir alana ek açıklama ekleyin. Bu alan, Azure Cosmos DB'deki belgeideşlenir. - Bu alanın adını
idolarak ayarlayın. Bu alan, Azure Cosmos DB'deki belgeideşlenir.
Not
Her iki yöntem de uygulanırsa,
@Idek açıklaması daha yüksek önceliğe sahiptir.-
Özel koleksiyon adları. Varsayılan olarak, koleksiyon adı kullanıcı etki alanı sınıfının sınıf adı olur. Özelleştirmek için, etki alanı sınıfınıza ek açıklama
@Document(collection="myCustomCollectionName")ekleyin, hepsi bu kadar.Azure Cosmos DB bölümünüdestekler. Etki alanı sınıfınızın bir alanını bölüm anahtarı alanı olarak belirtmek için,
@PartitionKeyile buna ek açıklama ekleyin. CRUD işlemleri yaparken bölüm değerinizi belirtin. Daha fazla örnek için bkz. GitHub'da AddressRepositoryIT.java.Spring Data özel sorgu bulma işlemini
destekler. destekler
spring-boot-starter-data-rest.Etki alanı sınıflarında Liste ve iç içe türleri destekler.
Temel kullanım
Azure Cosmos DB'ye erişmek için özel anahtar kullanma
Azure Cosmos DB'yi spring-cloud-azure-starter-data-cosmos bağlamanın en basit yolu birincil anahtardır. Aşağıdaki özellikleri ekleyin:
spring:
cloud:
azure:
cosmos:
key: ${AZURE_COSMOS_KEY}
endpoint: ${AZURE_COSMOS_ENDPOINT}
database: ${AZURE_COSMOS_DATABASE}
Varlık tanımlama
Aşağıdaki örnekte gösterildiği gibi Azure Cosmos DB'de bir varlığı Belge olarak tanımlayın:
@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);
}
}
id alanı, Azure Cosmos DB'de belge id olarak kullanılır. Alternatif olarak, @Idbelgeyle eşlemek için id ile herhangi bir alana açıklama ekleyebilirsiniz.
Ek açıklama @Container(containerName = "mycollection"), Azure Cosmos DB'de belgenizin koleksiyon adını belirtmek için kullanılır.
Depo oluşturma
Depo oluşturmak için Spring Data depo desteği sağlayan ReactiveCosmosRepository arabirimini genişletin.
@Repository
public interface UserRepository extends ReactiveCosmosRepository<User, String> {
Flux<User> findByFirstName(String firstName);
}
Şu anda ReactiveCosmosRepository arabirimi temel kaydetme, silme ve bulma işlemlerini sağlar. Daha sonra daha fazla işlem desteklenecektir.
Uygulama sınıfı oluşturma
Aşağıdaki örnek, tüm bileşenlerle bir uygulama sınıfı oluşturur:
@SpringBootApplication
public class CosmosSampleApplication implements CommandLineRunner {
private static final Logger LOGGER = LoggerFactory.getLogger(CosmosSampleApplication.class);
@Autowired
private UserRepository repository;
@Autowired
private CosmosProperties properties;
public static void main(String[] args) {
SpringApplication.run(CosmosSampleApplication.class, args);
}
public void run(String... var1) {
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());
}
@PostConstruct
public void setup() {
// For this example, remove all of the existing records.
this.repository.deleteAll().block();
}
}
Bu örnek, kaydetme, silme ve bulma işlemlerini desteklemek için otomatik olarak kablolu UserRepository arabirimini içerir.
Örnekleri
GitHub'da bölümüne azure-spring-boot-samples bakın.
spring-cloud-azure-starter-data-cosmos kitaplığını kullanmanın dışında, daha karmaşık senaryolar için doğrudan azure-spring-data-cosmos kitaplığını kullanabilirsiniz. Daha fazla bilgi için bkz. Azure Cosmos DB için Spring Data istemci kitaplığı.