Настройка приложения Spring Boot с MongoDB🍃

Spring Boot обеспечивает отличную поддержку приложений, обращающихся к MongoDB в качестве базы данных.

Для создания собственного приложения с использованием Spring Data MongoDB необходимо выполнить следующие подготовительные работы.

Конфигурация

Поскольку MongoDB является документо-ориентированной базой данных, она не будет подключена к нашему приложению с использованием Hibernate в качестве ORM-слоя. Вместо этого мы добавим spring-boot-starter-data-mongodb в качестве зависимости к нашему приложению, обеспечивая подход, аналогичный доступу к MongoDB с использованием POJO и репозиториев.

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
Вход в полноэкранный режим Выход из полноэкранного режима

Необходимая зависимость Maven

Установив эту зависимость, мы можем расширить наш application.yml или application.properties с помощью URI. Если база данных еще не существует, MongoDB создаст ее автоматически. При установке auto-index-creation в true, уникальные индексы будут добавлены во время запуска нашего приложения, если они аннотированы в наших документах с @Indexed(unique = true).

spring.data.mongodb.uri=mongodb://localhost:27017/mongo
spring.data.mongodb.auto-index-creation=true
Вход в полноэкранный режим Выход из полноэкранного режима

Для успешного подключения к базе данных требуется только URI

В нашем классе конфигурации следует установить @EnableMongoRepositories. Это будет искать классы в указанном пакете, которые расширяют MongoRepository — пример этого будет приведен через некоторое время. Обеспечив ValidatingMongoEventListener проверку всех документов перед сохранением, мы можем расширить их поля ограничениями javax.validation, такими как @NotNull.

@Configuration
@EnableMongoRepositories("io.bootify.mongo.repos")
public class MongoConfig {

    @Bagya
    public ValidatingMongoEventListener validatingMongoEventListener(
            final LocalValidatorFactoryBean factory) {
        return new ValidatingMongoEventListener(factory);
    }

}
Вход в полноэкранный режим Выход из полноэкранного режима

Первая версия нашего конфига

Кроме того, мы хотим включить поддержку транзакций для нашего приложения. Это позволит нам, например, помечать методы наших сервисов как @Transactional. Обратите внимание, что для поддержки этой функции необходимо инициализировать наш экземпляр MongoDB как набор реплик.

@Bagya
public MongoTransactionManager transactionManager(final MongoDatabaseFactory databaseFactory) {
    return new MongoTransactionManager(databaseFactory);
}
Вход в полноэкранный режим Выход из полноэкранного режима

Добавление поддержки транзакций в нашу конфигурацию

Пример документа и репозитория

После этих подготовительных работ мы уже можем определить простой документ и связанный с ним репозиторий. В нашем примере мы используем первичный ключ типа String, который автоматически генерируется MongoDB как ObjectID, если мы его не предоставим.

@Document
public class Customer {

    @Id
    private String id;

    @Size(max = 255)
    private String firstName;

    @Size(max = 255)
    private String lastName;

    @Indexed(unique = true)
    @NotNull
    @Size(max = 255)
    private String email;

}
Вход в полноэкранный режим Выход из полноэкранного режима

Наш первый POJO сопоставлен с коллекцией с именем «customer».

Мы добавляем наше хранилище, расширяя MongoRepository. Он работает так же, как и известный из Spring Data, и может быть расширен с помощью пользовательских запросов.

public interface CustomerRepository extends MongoRepository<Customer, String> {

    Customer findByEmail(String email);

}
Вход в полноэкранный режим Выход из полноэкранного режима

Базовый репозиторий для MongoDB

На этом все приготовления для соединения нашего приложения Spring Boot с MongoDB завершены. В бесплатном плане Bootify мы можем создать приложение с нашей пользовательской схемой базы данных без регистрации. Исходный код нашего приложения доступен для скачивания.

Оцените статью
devanswers.ru
Добавить комментарий